函数

1
2
3
fn add(i: i32, j: i32) -> i32 {
i + j
}

每一个函数参数都要标识出它的具体类型

返回值:最后一条表达式的返回值,当然我们也可以使用 return 提前返回

1
2
3
4
5
6
7
8
fn plus_or_minus(x:i32) -> i32 {
if x > 5 {
return x - 5
}

x + 5
}

函数没有返回值,那么返回一个 ()

1
2
3
4
5
6
7
8
9
// 隐式返回 ()
fn report<T: Debug>(item: T) {
println!("{:?}", item);
}

// 显式返回 ()
fn clear(text: &mut String) -> () {
*text = String::from("");
}

永不返回的发散函数 !

! 作函数返回类型的时候,表示该函数永不返回( diverge function )

这种语法往往用做会导致程序崩溃的函数:

1
2
3
fn dead_end() -> ! {
panic!("你已经到了穷途末路,崩溃吧!");
}

无限循环函数:

1
2
3
4
5
fn forever() -> ! {
loop {
//...
};
}