Variant structs
The most basic items generated by SuperStruct are the variant structs. For each
variant listed in the top-level superstruct(variants(..) list, a struct with
the name {BaseName}{VariantName} will be created. For example:
#![allow(unused)]
fn main() {
#[superstruct(variants(Foo, Bar))]
struct MyStruct {
name: String,
#[superstruct(only(Foo))]
location: u16,
}
}
Here the BaseName is MyStruct and there are two variants called Foo and Bar.
The generated variant structs are:
#![allow(unused)]
fn main() {
struct MyStructFoo {
name: String,
location: u16,
}
struct MyStructBar {
name: String,
}
}
Note how the only attribute controls the presence of fields in each variant.
For more information see Struct attributes.
The variant structs are unified as part of the top-level enum.