nestum 0.3.2

Proc-macro for nested enum paths like Enum1::Variant1::VariantA
Documentation
use nestum::{nested, nestum};

#[nestum]
pub enum Leaf {
    A,
    B(u8),
}

#[nestum]
pub enum Mid {
    Leaf(Leaf),
    Other,
}

#[nestum]
pub enum Outer {
    Mid(Mid),
    Tail,
}

fn main() {
    let unit: Outer::Enum = Outer::Mid::Leaf::A;
    let tuple: Outer::Enum = Outer::Mid::Leaf::B(7);
    let direct: Outer::Enum = Outer::Mid::Leaf(Leaf::B(9));
    let explicit: Outer::Enum = Outer::Enum::Mid(Mid::Enum::Leaf(Leaf::Enum::B(11)));

    nested! {
        match unit {
            Outer::Mid::Leaf::A => {}
            Outer::Mid::Leaf::B(n) => {
                let _ = n;
            }
            Outer::Mid::Other => {}
            Outer::Tail => {}
        }
    }

    let _ = tuple;
    let _ = direct;
    let _ = explicit;
}