概述
- Rust 的函数与其他编程语言类似,使用 fn 关键字声明。
- 函数用于执行任务并可返回值。
函数定义
- 函数由关键字 fn, 函数名,参数列表,返回类型,和函数体组成。
简单函数示例
fn add(i: i32, j: i32) -> i32 {
i + j
}
函数要点
- 使用蛇形命名法命名函数,如 add_two()。
- 函数定义位置灵活,Rust 不限制函数定义的位置。
- 每个参数都需要标注类型。
函数参数
函数参数类型标注示例
fn another_function(x: i32, y: f32) {
println!("The value of x is: {}", x);
println!("The value of y is: {}", y);
}
函数返回
- 函数的返回值可以是最后一条表达式的值,或使用 return 关键字提前返回。
使用表达式返回值示例
fn plus_five(x: i32) -> i32 {
x + 5
}
使用 return 返回值示例
fn plus_or_minus(x: i32) -> i32 {
if x > 5 {
return x - 5;
}
x + 5
}
特殊返回类型
- 无返回值:使用单元类型 () 表示函数没有返回值。
- 永不返回的发散函数:使用 ! 作为返回类型,表示函数永不返回。
无返回值函数示例
fn report<T: Debug>(item: T) {
println!("{:?}", item);
}
发散函数示例
fn dead_end() -> ! {
panic!("你已经到了穷途末路,崩溃吧!");
}
错误示例
- 如果函数期望返回特定类型但最后一行是语句,将导致错误。
错误示例
fn add(x: u32, y: u32) -> u32 {
x + y;
}
总结
- 函数是 Rust 中执行任务和返回值的基本单元。
- 函数需要为每个参数明确标注类型。
- 函数可以返回值,使用表达式或 return 关键字。
- 特殊返回类型包括无返回值的 () 和永不返回的 !。
- 理解语句和表达式的区别对 Rust 函数的使用至关重要。