enumcapsulate 0.6.3

Safe casting for newtype enums and their variants
Documentation
use enumcapsulate::VariantDiscriminant;

#[derive(VariantDiscriminant)]
pub enum VariantC {
    Variant,
}

#[derive(VariantDiscriminant)]
pub enum VariantD {
    Variant,
}

#[derive(VariantDiscriminant)]
pub enum VariantE<T> {
    Variant(T),
}

#[derive(VariantDiscriminant)]
#[enumcapsulate(discriminant(repr = u8))]
pub enum Enum<T> {
    VariantA,
    #[enumcapsulate(discriminant(value = 42))]
    VariantB,
    #[enumcapsulate(discriminant(nested))]
    VariantC {
        c: VariantC,
    },
    #[enumcapsulate(discriminant(name = RenamedVariant, nested))]
    VariantD(VariantD),
    #[enumcapsulate(field = 1, discriminant(nested = VariantEDiscriminant))]
    VariantE(bool, VariantE<T>),
}

fn main() {}