1# num-derive
2
3[![crate](https://img.shields.io/crates/v/num-derive.svg)](https://crates.io/crates/num-derive)
4[![documentation](https://docs.rs/num-derive/badge.svg)](https://docs.rs/num-derive)
5[![minimum rustc 1.31](https://img.shields.io/badge/rustc-1.31+-red.svg)](https://rust-lang.github.io/rfcs/2495-min-rust-version.html)
6[![build status](https://github.com/rust-num/num-derive/workflows/master/badge.svg)](https://github.com/rust-num/num-derive/actions)
7
8Procedural macros to derive numeric traits in Rust.
9
10## Usage
11
12Add this to your `Cargo.toml`:
13
14```toml
15[dependencies]
16num-traits = "0.2"
17num-derive = "0.3"
18```
19
20and this to your crate root:
21
22```rust
23#[macro_use]
24extern crate num_derive;
25```
26
27Then you can derive traits on your own types:
28
29```rust
30#[derive(FromPrimitive, ToPrimitive)]
31enum Color {
32    Red,
33    Blue,
34    Green,
35}
36```
37
38## Optional features
39
40- **`full-syntax`** — Enables `num-derive` to handle enum discriminants
41  represented by complex expressions. Usually can be avoided by
42  [utilizing constants], so only use this feature if namespace pollution is
43  undesired and [compile time doubling] is acceptable.
44
45[utilizing constants]: https://github.com/rust-num/num-derive/pull/3#issuecomment-359044704
46[compile time doubling]: https://github.com/rust-num/num-derive/pull/3#issuecomment-359172588
47
48## Releases
49
50Release notes are available in [RELEASES.md](RELEASES.md).
51
52## Compatibility
53
54The `num-derive` crate is tested for rustc 1.31 and greater.
55
56## License
57
58Licensed under either of
59
60 * [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0)
61 * [MIT license](http://opensource.org/licenses/MIT)
62
63at your option.
64
65### Contribution
66
67Unless you explicitly state otherwise, any contribution intentionally submitted
68for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
69dual licensed as above, without any additional terms or conditions.
70