tree: fdf63f55859267ab512775913bcc25f0c2c4215d [path history] [tgz]
  1. src/
  2. tests/
  3. Cargo.toml
  4. README.md
rand-derive/README.md

rand_macros

#[derive(Rand)] functionality for the rand::Rand trait.

Usage

Add this to your Cargo.toml:

[dependencies]
rand = "0.3"
rand_macros = "0.2"

and this to your crate root:

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.

#[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.

use rand::Rng;

let mut rng = rand::thread_rng();

println!("{:?}", rng.gen::<Foo>());
println!("{:?}", rng.gen::<Bar>());