enum-methods 0.0.8

Generates methods for each enum variant.
Documentation
#[macro_use]
extern crate enum_methods;

#[test]
fn test_is_a() {
    #[derive(EnumIsA, Debug)]
    enum MyEnum {
        Foo,
        Bar(bool, i32),
        Baz(String),
        StructType { foo: i32 },
        BiggerStructType {
            foo: i32,
            bar: &'static str,
            baz: bool,
        },
    }

    let first = MyEnum::Foo;
    let second = MyEnum::Bar(false, -3);
    let third = MyEnum::Baz(
        "it's gonna take some time to do the things we never had".to_string(),
    );
    let fourth = MyEnum::StructType { foo: 42 };
    let fifth = MyEnum::BiggerStructType {
        foo: 42,
        bar: "I hear the drums echoing tonight",
        baz: true,
    };

    assert!(first.is_foo());
    assert!(second.is_bar());
    assert!(third.is_baz());
    assert!(fourth.is_struct_type());
    assert!(fifth.is_bigger_struct_type());
}

#[test]
fn test_is_a_names() {
    #[derive(EnumIsA, Debug)]
    enum MyEnum {
        FooBar,
        BarBaz(bool, i32),
        Baz(String),
    }

    let first = MyEnum::FooBar;
    let second = MyEnum::BarBaz(false, -3);
    let third = MyEnum::Baz(
        "cheers only whispers of some quiet conversation".to_string(),
    );

    assert!(first.is_foo_bar());
    assert!(second.is_bar_baz());
    assert!(third.is_baz());
}