3
我最近看到一個這樣的代碼:在Rust中使用`!`作爲返回類型是什麼?
fn read() -> ! {
unimplemented!()
}
fn read2() {
}
fn main() {
read2();
read();
}
我找不到有關!
任何信息的fn read()
返回類型的任何地方,所以我沒有任何想法,這是什麼和什麼。
我發現的唯一的事情似乎是毫無意義我:
使用!作爲返回類型指示鏽編譯器這個功能不會返回
我不明白,因爲省略類型它做什麼也說,該函數返回也不做(unit
類型實際上)。
返回沒有不一樣的永不返回。 – Lee
@Lee所以你似乎知道答案,你可以在這裏回答一個詳細的解釋。 –
好吧,我會等待Rust程序員回答,但我相信'!'是空的類型,所以具有該返回類型的函數將永遠不會正常返回(例如,它會導致程序恐慌或終止)。相比之下,'()'是一個具有一個值的類型,因此具有該返回類型的函數只會因其副作用而被執行。 – Lee