函数¶
函数的形式如下:
// 无参无返回值
fn function_1() {
}
// 有参无返回值
fn function_2(arg: i32) {
}
// 无参有返回值
fn function_3() -> i32 {
}
// 有参有返回值
fn function_4(arg: i32) -> i32 {
}
- 形参的类型不能省略;
- 函数的返回值不可以命名;
- 函数的返回值就是函数体里最后一个 表达式 的值;
- 可以使用
return
关键字显式的返回;
// 5 是一个表达式,所以这里 5 是函数 five() 的返回值
fn five() -> i32 {
5
}
// num + 1 没有分号,也是一个表达式,在这里就是函数 add() 的返回值
fn add(num: i32) -> i32 {
let x = 1;
num + 1
}
fn sub(num: i32) -> i32 {
let x = 1;
return num - 1;
}
Tip
表达式 与 语句 区别在于有没有分号。表达式 没有分号,语句 有。
Rust 中默认将最后一个表达式作为块({}
之间称为一个块)的返回值。
例如:
两种特殊的返回值¶
无返回值 ()
¶
如果一个函数没有返回值,其实默认返回了一个单元类型 ()
。
例如:
其实等价于
永不返回 !
¶
当用 !
作为函数返回值时,表示该函数永不返回,这种在 Rust 中定义为 发散函数 diverge function
。这种语法往往用做会导致程序崩溃的函数。
下面这种创建一个无限循环的函数,也是发散函数,因为她永不返回。