5 releases (3 breaking)

Uses old Rust 2015

0.5.0 Sep 24, 2018
0.3.1 Aug 23, 2017
0.3.0 Jul 30, 2017
0.2.0 Nov 21, 2016
0.1.0 May 2, 2016

#71 in #rand

Download history 511/week @ 2023-11-20 1005/week @ 2023-11-27 1191/week @ 2023-12-04 931/week @ 2023-12-11 375/week @ 2023-12-18 375/week @ 2023-12-25 498/week @ 2024-01-01 925/week @ 2024-01-08 689/week @ 2024-01-15 472/week @ 2024-01-22 714/week @ 2024-01-29 512/week @ 2024-02-05 299/week @ 2024-02-12 198/week @ 2024-02-19 363/week @ 2024-02-26 251/week @ 2024-03-04

1,132 downloads per month
Used in 17 crates (8 directly)

MIT/Apache

7KB
91 lines

rand_derive

#[derive(Rand)] functionality enabling sampling of random instances.

This crate is deprecated as of rand 0.5 since the Rand trait has been deprecated and since it appears to have very little use.

This crate has been updated to work with Rand 0.5, however note that it now implements Distribution<Self> for Standard instead of Rand.

Usage

Add this to your Cargo.toml:

[dependencies]
rand = "0.5"
rand_derive = "0.5"

and this to your crate root:

extern crate rand;
#[macro_use]
extern crate rand_derive;

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

Dependencies

~1.5MB
~40K SLoC