diff options
Diffstat (limited to 'rand/rand-derive/README.md')
-rw-r--r-- | rand/rand-derive/README.md | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/rand/rand-derive/README.md b/rand/rand-derive/README.md new file mode 100644 index 0000000..3d1fedb --- /dev/null +++ b/rand/rand-derive/README.md @@ -0,0 +1,51 @@ + +rand_macros +==== + +`#[derive(Rand)]` functionality for the `rand::Rand` trait. + +## Usage +Add this to your `Cargo.toml`: + +```toml +[dependencies] +rand = "0.4" +rand_macros = "0.2" +``` + +and this to your crate root: + +```rust +extern crate rand; +#[macro_use] +extern crate rand_macros; +``` + +## Examples + +`#[derive(Rand)]` can be used on any `struct` or `enum` where all fields/variants implement `rand::Rand`. + +```rust +#[derive(Debug, Rand)] +struct Foo { + x: u16, + y: Option<f64>, +} + +#[derive(Debug, Rand)] +enum Bar { + X{x: u8, y: isize}, + Y([bool; 4]), + Z, +} +``` +Now you can call the `Rng::gen()` function on your custom types. + +```rust +use rand::Rng; + +let mut rng = rand::thread_rng(); + +println!("{:?}", rng.gen::<Foo>()); +println!("{:?}", rng.gen::<Bar>()); +``` |