【发布时间】:2015-04-29 06:26:20
【问题描述】:
考虑以下(非法)示例:
enum Foo {
Bar { i: i32 },
Baz,
}
struct MyStruct {
field: Foo::Bar,
}
Foo::Bar 是一个struct-like variant。我发现它们非常有用。但是,我有一个实例,我需要将结构的实例存储在另一个结构中,例如上面的MyStruct 示例。将MyStruct::field 更改为Foo 是无效的,因为将字段设置为Foo::Baz 没有意义。它只是作为Foo::Bar 的一个实例。
rustc告诉我上面的代码无效:
error: found value name used as a type: DefVariant(DefId { krate: 0u32, node: 4u32 }, DefId { krate: 0u32, node: 5u32 }, true)
我只是做错了什么,还是这不可能?如果不可能,有什么计划吗?
我知道我可以像这样解决它,但我认为这是一个次等的选择,如果可能的话我想避免它:
struct Bar {
i: i32,
}
enum Foo {
Bar(Bar),
Baz,
}
struct MyStruct {
field: Bar,
}
【问题讨论】: