enum_primitive 0.0.1

Macro to generate num::FromPrimitive instances for enum that works in Rust 1.0

This crate exports a macro enum_from_primitive! that wraps an enum declaration and automatically adds an implementation of num::FromPrimitive (reexported here), to allow conversion from primitive integers to the enum. It therefore provides an alternative to the built-in #[derive(FromPrimitive)], which requires the unstable std::num::FromPrimitive and is disabled in Rust 1.0.

The current implementation requires all variants of the num to have an explicit discriminator value. This restriction may be relaxed in future versions.

Example

#[macro_use] extern crate enum_primitive;
extern crate num;
use num::FromPrimitive;

enum_from_primitive! {
#[derive(Debug, PartialEq)]
enum FooBar {
    Foo = 17,
    Bar = 42,
}
}

fn main() {
    assert_eq!(FooBar::from_i32(17), Some(FooBar::Foo));
    assert_eq!(FooBar::from_i32(42), Some(FooBar::Bar));
    assert_eq!(FooBar::from_i32(91), None);
}