auto-enum 0.2.0-alpha1

Provides attribute macros for building enums which are convenient for use with FFI, along with "enum" flags.
Documentation
#[macro_use]
extern crate auto_enum;

#[auto_enum]
pub enum Bar {
    None = 0,
    Some = 1,
}

#[enum_flags(u32)]
pub enum Foo {
    A,
    B,
    C,
    D,
}

fn main() {
    let flags = Foo::B | Foo::D;

    println!("{}", flags.is_set(Foo::A));
    println!("{}", flags.is_set(Foo::B));
    println!("{}", flags.is_set(Foo::C));
    println!("{}", flags.is_set(Foo::D));
}