Rand derive 2

Latest Version Build Status

Derive macro for generating random types with the rand crate. It will implement the rand::distributions::Standard for a given type.

Usage

Check out the example crate or follow the instructions below.

  1. Add this to your Cargo.toml file:

toml [dependencies] rand-derive = "0.1" rand = "0.7"

  1. Import the macro somewhere in your file where your type is: rust use rand_derive2::RandGen;

Alternatively, use this to global import the macro: ```rust

[macro_use]

extern crate rand_derive2; ```

  1. Add the RandGen derive macro for your type: ```rust

    [derive(RandGen)]

struct MyStruct {} ```

  1. Generate your struct: rust fn generate_my_struct() -> MyStruct { rand::random() }

Customization

Note: all things that can be customized is covered in the example crate

Options

To make sure an option is never generated with None, add the always_some attribute on top of the property.

Skip enum variant

If a variant should never be generated, add the skip_variant attribute on the variant.

Custom value

If you want a custom value for one of the properties, add the custom_rand attribute. A trait is created called TestDataProviderFor$TYPE$. This trait will require the user to provider the values.

How it works

Structs

It calls rng.gen() on all the fields.

Enums

It will generate a random variant.

TODO

License

MIT