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.