Consider the following (illegal) example:
enum Foo {
Bar { i: i32 },
Baz,
}
struct MyStruct {
field: Foo::Bar,
}
Foo::Bar
is a struct-like variant. I've found them to be quite useful. However, I have an instance where I need to store an instance of the struct inside another struct, like the above example of MyStruct
. Changing MyStruct::field
to be a Foo
would be invalid, as it doesn't make sense for the field to be a Foo::Baz
. It's just meant to be an instance of Foo::Bar
.
rustc
tells me the above code is invalid:
error: found value name used as a type: DefVariant(DefId { krate: 0u32, node: 4u32 }, DefId { krate: 0u32, node: 5u32 }, true)
Am I just doing something wrong, or is this not possible? If it's not possible, are there any plans on doing it?
I know I could work around it like this, but I consider it an inferior option and it's one I'd like to avoid if possible:
struct Bar {
i: i32,
}
enum Foo {
Bar(Bar),
Baz,
}
struct MyStruct {
field: Bar,
}
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…