I'm using an enum for polymorphism, similar to the following:
enum MyType {
Variant1 { a: i32, b: i32 },
Variant2 { a: bool, b: bool },
}
Is there clean way to use existing structs for Variant1
and Variant2
? I've done the following:
struct Variant1 {
a: i32,
b: i32,
}
struct Variant2 {
a: bool,
b: bool,
}
enum MyType {
Variant1(Variant1),
Variant2(Variant2),
}
but it feels pretty clunky. I was wondering if there's a better way to accomplish a similar thing.
The enum keyword allows the creation of a type which may be one of a few different variants. Any variant which is valid as a struct is also valid as an enum .
In Rust, methods cannot only be defined on structs, they can also be defined on tuples and enums, and even on built-in types like integers.
There have been multiple RFCs about making enum variants their own type:
Unfortunately, they have been postponed or not yet decided on as this is not considered a language priority.
This means that right now, the way you have proposed is the only way to have types for enum variants.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With