tree: 122cd89a0b06a1d44aa15cb240055ea1686bd607 [path history] [tgz]
  1. Cargo.toml
  3. src/
  4. tests/


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

This module is deprecated as of rand 0.5, due in part to breaking changes in rand and in part to lack of use. Code is preserved because in theory it should be straightforward to modify for use with rand's new distribution code.


Add this to your Cargo.toml:

rand = "0.4"
rand_macros = "0.2"

and this to your crate root:

extern crate rand;
extern crate rand_macros;


#[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]),

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>());