2026-02-13 06:21:56
Rust函数是构建程序的核心工具,具有灵活性和强大的表达能力。以下是对Rust函数的系统总结:
1. 基本函数Rust函数以fn关键字声明,支持无参数、无返回值的简单结构。
fn greet() { println!("你好,世界!");}通过参数实现动态行为,需明确标注参数类型。
fn greet_person(name: &str) { println!("你好,{}!", name);}参数类型如&str(字符串切片)需显式声明。
参数传递默认是借用的(如&str),避免所有权转移。
函数通过->指定返回类型,省略分号表示表达式返回值。
fn double(x: i32) -> i32 { x * 2 // 无分号,自动返回}提前返回需用return关键字(如return x * 2;)。
支持返回复杂类型(如Vec<T>、结构体)。
函数可接受多种参数类型,包括集合和Option等枚举。
fn make_salad(greens: &str, veggies: Vec<&str>, dressing: Option<&str>) { // 处理逻辑}Vec<T>表示动态数组,Option<T>安全处理可选值。
参数解构灵活(如模式匹配Option)。
通过泛型参数实现类型抽象,提升代码复用性。
fn box_it<T>(item: T) -> Box<T> { Box::new(item)}<T>声明泛型类型,编译器在调用时推断具体类型。
适用于容器、算法等通用场景。
函数可作为参数或返回值,支持函数式编程风格。
fn math_factory(op: fn(i32) -> i32) -> impl Fn(i32) -> i32 { move |x| op(x) * 2 // 返回闭包}回调函数(如事件处理)。
工厂模式生成定制化函数(如impl Trait返回闭包)。
匿名函数可捕获环境变量,语法简洁。
fn main() { let msg = "Rust"; let greet = || println!("Hello, {}!", msg); // 捕获`msg` greet();}通过move关键字强制转移变量所有权。
闭包类型自动推断,无需显式标注参数/返回类型。
Rust函数系统融合了安全性、表达力和灵活性:
掌握这些特性后,可编写出既高效又安全的代码。继续探索async/await、宏等扩展功能,将进一步释放Rust的潜力! ??