考虑以下(非法)示例:
enum Foo {
Bar { i: i32 },
Baz,
}
struct MyStruct {
field: Foo::Bar,
}
Foo::Bar
是一个类似结构体的变体。我发现它们非常有用。然而,我需要在另一个结构体中存储该结构体的实例,就像上面的 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,
}