enum_macro_gen 0.2.0

Macro generator for handling enums
Documentation
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<Test>),
    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();
            }
        }
    };
}
// </**GENERATED**>
```

## 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.