Derive macro for generating random types with the rand
crate.
It will implement the rand::distributions::Standard
for a given type.
Check out the example crate or follow the instructions below.
toml
[dependencies]
rand-derive = "0.1"
rand = "0.7"
rust
use rand_derive2::RandGen;
Alternatively, use this to global import the macro: ```rust
extern crate rand_derive2; ```
struct MyStruct {} ```
// Or like this fn generatemystructdirect() -> MyStruct { MyStruct::generaterandom() } ```
Note: all things that can be customized is covered in the example crate
To make sure an option is never generated with None
, add the always_some
attribute on top of the property.
To make sure an option is never generated with Some
, add the always_none
attribute on top of the property.
If a variant should never be generated, add the skip_variant
attribute on the variant.
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.
Panic implementation of the property, making the type unable to be random generated.
Note: place #[allow(unreachable_code)]
above your type to omit compiler warnings.
Place this above a string type to make it generate an empty string.
It calls rng.gen()
on all the fields.
It will generate a random variant.
rand::distributions::Standard
)Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.