rand_dev 0.1.0

Reproducible randomness source for tests
Documentation
![License](https://img.shields.io/crates/l/rand_dev)
[![Docs](https://docs.rs/rand_dev/badge.svg)](https://docs.rs/rand_dev)
[![Crates io](https://img.shields.io/crates/v/rand_dev.svg)](https://crates.io/crates/rand_dev)

<!-- run `cargo rdme` to regenerate a block below: -->
<!-- cargo-rdme start -->

# Reproducible randomness source for tests

Having reproducible tests helps debugging problems that have probabilistic nature. This library provides
a random numbers generator [`DevRng`] compatible with [`rand`] crate (it implements [`Rng`],
[`RngCore`], [`SeedableRng`] traits). When generator is constructed, its seed is printed to stdout.
You can override a seed by setting `RUST_TESTS_SEED` env variable. Same seed leads to same randomness
generated across all platforms.

[`Rng`]: rand::Rng
[`RngCore`]: rand::RngCore
[`SeedableRng`]: rand::SeedableRng

## Usage
Reproducible source of randomness can be added in one line:

```rust
use rand::Rng;
use rand_dev::DevRng;

#[test]
fn it_works() {
    let mut rng = DevRng::new();
    assert!(rng.gen_range(0..=10) < 10);
}
```

Then if test fails, you can observe seed of randomness generator in stdout:
```text
$ cargo test
    Finished test [unoptimized + debuginfo] target(s) in 0.00s
     Running unittests (target/debug/deps/simple_usage-592d47155d40d1f7)

running 1 test
test tests::it_works ... FAILED

failures:

---- tests::it_works stdout ----
Tests seed: cab4ab5c8471fa03691bb86d96c2febeb9b1099a78d164e8addbe7f83d107c78
thread 'tests::it_works' panicked at 'assertion failed: rng.gen_range(0..=10) < 10', src/lib.rs:9:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    tests::it_works

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
```

Now you can fix the seed by setting env variable to reproduce and debug a failing test:
```text
$ export RUST_TESTS_SEED=cab4ab5c8471fa03691bb86d96c2febeb9b1099a78d164e8addbe7f83d107c78
$ cargo test
```

<!-- cargo-rdme end -->

[`DevRng`]: https://docs.rs/rand_dev/latest/rand_dev/struct.DevRng.html
[`rand`]: https://docs.rs/rand

## License

Licensed under either of

 * Apache License, Version 2.0, ([LICENSE-APACHE]LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
 * MIT license ([LICENSE-MIT]LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.

### Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, 
as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.