我正在尝试使用通用数据类型,其中不需要其中一种类型(图中的边权重)。我一直在考虑使用never类型,这看起来像这样:
#![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"
占位符的类型不匹配,但只输入任何内容都会导致其他错误。 !
是否在这里使用正确的类型,如果是,那么正确的语法是什么?
我已经使用()
代替!
来使用它,但我不确定这是否是正确的类型选择。我相信在效率方面它应该没有区别,因为()
没有内存占用?
答案 0 :(得分:5)
()
是正确的选择。它是一个具有单个值的类型(也称为()
),因此它有一个值,但不包含任何信息。
!
没有任何值,所以如果你把它放在一个结构中,结构类型也没有值,并且基本上不可用。