【发布时间】:2015-11-30 15:01:06
【问题描述】:
trait Bar {
fn bar(&self);
}
enum Foo<T: Bar> {
F1,
F2(T)
}
struct Something;
impl Bar for Something {
fn bar(&self) {
}
}
fn main() {
let a = Foo::F2(Something); //<== this works fine.
let b = Foo::F1; //<== gives a compilation error.
}
编译错误 E0282:无法推断出足够的关于_ 的类型信息;需要类型注释或泛型参数绑定。
我理解为什么编译器会抱怨,但似乎无法弄清楚如何在 F1 情况下不必为 T 分配类型。
【问题讨论】:
-
无需为 T 分配类型 — 为什么不想为
T分配具体类型? -
好吧,我的意思是在 F1 的情况下,我不需要 T 类型,所以这样做似乎毫无意义。如果没有办法做到这一点,我可以忍受在所有情况下为 T 分配一个类型。
-
啊,这只是一个尚未稳定的功能:github.com/rust-lang/rust/issues/29101,现在可以使用:is.gd/GIiHHP
-
感谢您的回答,但默认值不是我想要的。我跟着 Shepmaster adivce 并像这样解决了它is.gd/lz8TRr
标签: rust