Derive Macro enumcapsulate_macros::VariantDiscriminant

source ·
#[derive(VariantDiscriminant)]
Expand description

Derive macro generating an impl of the trait VariantDiscriminant.

struct Inner;

enum Outer {
    Inner(Inner),
    // ...
}

// The generated discriminant type looks something along these lines:

#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
pub enum OuterDiscriminant {
    Inner,
    // ...
}

// The generated impl looks something along these lines:

impl VariantDiscriminant for Outer {
    type Discriminant = OuterDiscriminant;

    fn variant_discriminant(&self) -> Self::Discriminant {
        match self {
           Outer::Inner(_) => OuterDiscriminant::Inner,
           // ...
       }
    }
}