enum-variant-enumerator-derive

A derive macro for generating an enumerator over all variants of an enum.

Examples

use enum_variant_enumerator_derive::VariantEnumerator;

#[derive(VariantEnumerator, Debug, Clone, Copy, PartialEq, Eq)]
enum GrammarElements {
    Expr,
    Factor,
    Term,
}

fn main() {
    assert_eq!(
        GrammarElements::enumerate_variants().collect::<Vec<_>>(),
        vec![
            GrammarElements::Expr,
            GrammarElements::Factor,
            GrammarElements::Term,
        ]
    )
}

Usage

This macro assumes the derive is applied against an enum where all variants have exactly 0 fields.