4
我想使用一個通用的數據類型,其中一種類型是不需要的(圖中的邊權重)。我一直在想使用從未鍵入此,這將是這個樣子:如何指定不需要其中一種類型的泛型類型?
#![feature(never_type)]
struct Foo<T> {
bar: T
}
impl<T> Foo<T> {
fn foo(&mut self, bar: T) {
self.bar = bar;
}
}
fn main() {
let mut foo: Foo<!> = Foo { bar: "nada" };
foo.foo("nada");
}
這顯然導致了"nada"
佔位符類型不匹配,但只是打字什麼也不會導致其他錯誤。是!
這裏使用的正確類型,如果是這樣,那麼正確的語法是什麼?
我已經得到它使用()
而不是!
,但我有點不確定這是否是正確的選擇類型。我相信在效率方面它應該沒有區別,因爲()
沒有內存佔用?
這個答案是正確的,但是*有*的時候你想要使用'!'作爲一個類型。進一步閱讀:[RFC 1216](https://github.com/rust-lang/rfcs/blob/master/text/1216-bang-type.md)和相應的[追蹤問題](https:// github。 COM /防鏽琅/防鏽/問題/ 35121)。 – Shepmaster
注意我沒有說'!'是不可用的,只有結構不是很有用(儘管它可以用來表示代碼永遠不會像'!'本身那樣執行)。我其實喜歡RFC 1216。 – starblue