如何指定不需要其中一种类型的泛型类型?

Hen*_*ler 4 rust

我正在尝试使用通用数据类型,其中不需要其中一种类型(图中的边权重).我一直在考虑使用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");
}
Run Code Online (Sandbox Code Playgroud)

这显然"nada"会导致占位符类型不匹配,但只输入任何内容都会导致其他错误.!这里使用的是正确的类型,如果是,那么正确的语法是什么?

我已经用它()代替了它!,但我有点不确定这是否是正确的类型选择.我相信在效率方面它应该没有区别,因为()没有内存占用?

sta*_*lue 5

()是正确的选择.它是具有单个值(也称为())的类型,因此它具有值,但不包含任何信息.

! 没有任何值,所以如果你把它放在一个结构中,结构类型也没有值,基本上是不可用的.