A Rust library random-trait that helps generating random values in an easy and convinient way while still being a very thin library without dependencies.
This crate is inspired by the rand crate, but with the purpose of providing a very thin library, and support old compilers.
Add this to your Cargo.toml
:
toml
[dependencies]
random-trait = "0.1"
and for Rust Edition 2015 add this to your crate root:
rust
extern crate random_trait;
use random_trait::{GenerateRand, Random};
In Rust Edition 2018 you can simply do:
rust
use random_trait::{GenerateRand, Random};
After that you'll need to implement Random
for your source of randomness,
And optionally also add GenerateRand
implementations for your custom types.
```rust use random_trait::{Random, GenerateRand}; #[derive(Default)] struct MyRandomGenerator { ctr: usize, }
impl Random for MyRandomGenerator { type Error = (); fn tryfillbytes(&mut self, buf: &mut [u8]) -> Result<(), Self::Error> { for e in buf.iter_mut() { *e = self.ctr as u8; self.ctr += 1; } Ok(()) } }
struct MyStuff { a: u64, b: char, }
impl GenerateRand for MyStuff {
fn generate
fn getrandomstuff() -> MyStuff { let mut rand = MyRandomGenerator::default(); rand.gen() }
fn getrandomu128() -> u128 { let mut rand = MyRandomGenerator::default(); rand.gen() } ```