File tree 2 files changed +44
-0
lines changed 2 files changed +44
-0
lines changed Original file line number Diff line number Diff line change @@ -23,6 +23,17 @@ and this to your crate root:
23
23
extern crate num_derive;
24
24
```
25
25
26
+ Then you can derive traits on your own types:
27
+
28
+ ``` rust
29
+ #[derive(FromPrimitive , ToPrimitive )]
30
+ enum Color {
31
+ Red ,
32
+ Blue ,
33
+ Green ,
34
+ }
35
+ ```
36
+
26
37
## Optional features
27
38
28
39
- ** ` full-syntax ` ** — Enables ` num-derive ` to handle enum discriminants
Original file line number Diff line number Diff line change 11
11
#![ crate_type = "proc-macro" ]
12
12
#![ doc( html_root_url = "https://docs.rs/num-derive/0.2" ) ]
13
13
14
+ //! Procedural macros to derive numeric traits in Rust.
15
+ //!
16
+ //! ## Usage
17
+ //!
18
+ //! Add this to your `Cargo.toml`:
19
+ //!
20
+ //! ```toml
21
+ //! [dependencies]
22
+ //! num-traits = "0.2"
23
+ //! num-derive = "0.2"
24
+ //! ```
25
+ //!
26
+ //! Then you can derive traits on your own types:
27
+ //!
28
+ //! ```rust
29
+ //! #[macro_use]
30
+ //! extern crate num_derive;
31
+ //!
32
+ //! #[derive(FromPrimitive, ToPrimitive)]
33
+ //! enum Color {
34
+ //! Red,
35
+ //! Blue,
36
+ //! Green,
37
+ //! }
38
+ //! # fn main() {}
39
+ //! ```
40
+
14
41
extern crate proc_macro;
15
42
16
43
extern crate proc_macro2;
@@ -23,6 +50,9 @@ use proc_macro2::Span;
23
50
24
51
use syn:: { Data , Fields , Ident } ;
25
52
53
+ /// Derives [`num_traits::FromPrimitive`][from] for simple enums.
54
+ ///
55
+ /// [from]: https://docs.rs/num-traits/0.2/num_traits/cast/trait.FromPrimitive.html
26
56
#[ proc_macro_derive( FromPrimitive ) ]
27
57
pub fn from_primitive ( input : TokenStream ) -> TokenStream {
28
58
let ast: syn:: DeriveInput = syn:: parse ( input) . unwrap ( ) ;
@@ -79,6 +109,9 @@ pub fn from_primitive(input: TokenStream) -> TokenStream {
79
109
res. into ( )
80
110
}
81
111
112
+ /// Derives [`num_traits::ToPrimitive`][to] for simple enums.
113
+ ///
114
+ /// [to]: https://docs.rs/num-traits/0.2/num_traits/cast/trait.ToPrimitive.html
82
115
#[ proc_macro_derive( ToPrimitive ) ]
83
116
pub fn to_primitive ( input : TokenStream ) -> TokenStream {
84
117
let ast: syn:: DeriveInput = syn:: parse ( input) . unwrap ( ) ;
You can’t perform that action at this time.
0 commit comments