diff options
Diffstat (limited to 'rust/vendor/enum_primitive/README.md')
-rw-r--r-- | rust/vendor/enum_primitive/README.md | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/rust/vendor/enum_primitive/README.md b/rust/vendor/enum_primitive/README.md new file mode 100644 index 0000000..539e4b0 --- /dev/null +++ b/rust/vendor/enum_primitive/README.md @@ -0,0 +1,49 @@ +# enum_primitive [![Build Status](https://travis-ci.org/andersk/enum_primitive-rs.svg?branch=master)](https://travis-ci.org/andersk/enum_primitive-rs) + +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. + +## Documentation + +https://andersk.github.io/enum_primitive-rs/enum_primitive/ + +## Usage + +Add the following to your `Cargo.toml` file: + +``` +[dependencies] +enum_primitive = "*" +``` + +Import the crate using `#[macro_use] extern crate enum_primitive`, and +wrap your `enum` declaration inside the `enum_from_primitive!` macro. + +## Example + +```rust +#[macro_use] extern crate enum_primitive; +extern crate num; +use num::FromPrimitive; + +enum_from_primitive! { +#[derive(Debug, PartialEq)] +enum FooBar { + Foo = 17, + Bar = 42, + Baz, +} +} + +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(43), Some(FooBar::Baz)); + assert_eq!(FooBar::from_i32(91), None); +} +``` |