rust 语句与表达式 以及奇妙返回值
语句与表达式
rust中,分号结尾的是语句,没有分号结尾的是表达式
表达式会进行求值,然后返回一个值
函数也是一个表达式
如果一个表达式不返回任何值,那么就会返回
()
rust中一个妙妙类型叫单元类型,其表示为()
,对就是一对括号,唯一的值也是 ()。
谈谈奇妙的返回值
1. 单元类型()
或者说无返回值
用途
做函数的返回值
震撼我一整年,fn main()
中的()
是main
函数的返回值。
你不能说 main 函数无返回值,因为没有返回值的函数在 Rust 中是有单独的定义的:发散函数( diverge function ),顾名思义,无法收敛的函数。
map中的占位符
你可以用 () 作为 map 的值,表示我们不关注具体的值,只关注 key。 这种用法和 Go 语言的 struct{} 类似,可以作为一个值用来占位,但是完全不占用任何内存。
2. 发散函数 !
又一个逆天语法
当用!
作函数返回类型的时候,表示该函数永不返回( diverge function ),特别的,这种语法往往用做会导致程序崩溃的函数:
fn dead_end() -> ! {
panic!("你已经到了穷途末路,崩溃吧!");
}