Crate enum_primitive [stability]
[-] [+]
[src]
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); }
Macros
| enum_from_primitive! | Wrap this macro around an |
| enum_from_primitive_impl! | Helper macro for internal use by |
| enum_from_primitive_impl_ty! | Helper macro for internal use by |
Traits
| FromPrimitive | A generic trait for converting a number to a value. |