rust 函数定义,发散函数,函数指针
// 函数定义和参数声明
// 必须为参数声明类型
// 只能返回一个返回值
fn add(x: i32, y: i32) -> i32 {
println!("x + y = {}", x + y);
x + y // 返回值不加;为表达式
// 可以使用 return 提早返回不放在最后一行
}
// 发散函数 (Diverging functions)
// 发散函数不返回
fn diverges() -> ! {
panic!("this function never returns"); // 一个宏
// 导致线程崩溃并返回指定信息
// 它不返回,有一个类型!
// 代表 “发散”
}
fn sub(x: i32, y: i32) -> i32 {
x - y
}
fn main() {
// 函数调用 返回值
let r = add(10, 100);
println!("r is : {}", r);
// 调用发散函数
// diverges(); // 想要更多崩溃信息,
// 设定RUST_BACKTRACE环境变量来获取 backtrace
// shell执行:RUST_BACKTRACE=1 ./diverges
// 函数指针
let f: fn(i32, i32) -> i32; // 声明一个函数变量绑定(类似C语言声明函数指针类型)
f = sub;
println!("f return : {}", f(20, 10));
}