summaryrefslogtreecommitdiffstats
path: root/rust/vendor/enum_primitive/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'rust/vendor/enum_primitive/README.md')
-rw-r--r--rust/vendor/enum_primitive/README.md49
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);
+}
+```