rand_derive2 0.1.0

Generate customizable random types with the rand crate
Documentation

Rand derive 2

Latest Version Build Status

Derive macro for generating random types with the rand crate.

Usage

Check out the example crate or follow the instructions below.

  1. Add this to your Cargo.toml file:
[dependencies]
rand-derive = "0.1"
rand = "0.7"
  1. Import the macro somewhere in your file where your type is:
use rand_derive2::RandGen;

Alternatively, use this to global import the macro:

#[macro_use]
extern crate rand_derive2;
  1. Add the RandGen derive macro for your type:
#[derive(RandGen)]
struct MyStruct {}
  1. Generate your struct:
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

  • Recursion for e.g. vec in vec
  • More types from the standard library covered
  • Functions documented
  • Custom trait type/method names

License

MIT