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