This crate provides the `EnumMacroGen` derive proc macro for Rust, which simplifies handling variants of an enum. It generates declartive macros according to a given template. ## Example ```rust use enum_macro_gen::EnumMacroGen; #[derive(EnumMacroGen)] #[enum_macro[handle_test={match: $self.handle_$variant($fields);}]] enum Test { Foo(Item), Double(Item, Box), Bar, } ``` Instead of writing a `match` statement to handle each variant of `Test`, you can use the `handle_test!` a macro generated by `EnumMacroGen`. ```rust // <**GENERATED**> macro_rules! handle_test { ($self:ident, $test:ident) => { match $test { Test::Foo(a_0) => { $self.handle_foo(a_0); } Test::Double(a_0, a_1) => { $self.handle_double(a_0, a_1); } Test::Bar => { $self.handle_bar(); } } }; } // ``` ## Deriving EnumMacroGen To use `EnumMacroGen`, simply add `#[derive(EnumMacroGen)]` above your enum declaration. You can also specify the format of the generated macro with the `enum_macro` attribute. The attribute value should be a token list containing `$variant` and `$fields`, which will be replaced with the variant name and fields, respectively.