我最近看到了这样一段代码:
fn read() -> ! {
unimplemented!()
}
fn read2() {
}
fn main() {
read2();
read();
}
我在任何地方都找不到关于
fn read()
返回类型为!
的信息,所以我不知道这是什么以及它有什么用途。我唯一发现似乎对我没用:
我不理解它的作用,因为省略类型也表示该函数不返回任何东西(实际上是使用!作为返回类型告诉Rust编译器该函数永远不会返回
unit
类型)。
!
是空类型,因此具有该返回类型的函数永远不会正常返回(例如,它将引发 panic 或终止程序)。相比之下,()
是一个具有一个值的类型,因此具有该返回类型的函数仅用于其副作用的执行。 - Lee