我最近看过这样的代码:
fn read() -> ! {
unimplemented!()
}
fn read2() {
}
fn main() {
read2();
read();
}
Run Code Online (Sandbox Code Playgroud)
我在任何地方都找不到关于!as返回类型的任何信息,fn read()所以我不知道这是什么以及它的作用。
我发现的唯一东西似乎对我没用:
使用!作为返回类型向Rust编译器指示此函数永不返回
我不明白它的作用,因为省略类型也表示该函数什么也不返回(unit实际上是该类型)。
Unit()不是什么都没有,它是一种类型,还写了一个可能的值()。
此外,当一个函数返回单位(或如你所说的“无”)时,它实际上会返回。该Never类型!指明函数从不返回,即退出程序。
这通常是panic宏的返回类型:
let s = match i {
1 => "one",
2 => "two",
_ => panic!("Error"),
}
Run Code Online (Sandbox Code Playgroud)
在这个例子中,注意!可以“扮演角色”的所有类型。编译器不会抱怨一个分支有 type&str而另一个分支有 type !。