A derive macro for generating an enumerator over all variants of an enum.
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,
]
)
}
This macro assumes the derive is applied against an enum where all variants have exactly 0 fields.