diff options
Diffstat (limited to 'gen_random/src/lib.rs')
-rw-r--r-- | gen_random/src/lib.rs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/gen_random/src/lib.rs b/gen_random/src/lib.rs new file mode 100644 index 0000000..f091ec3 --- /dev/null +++ b/gen_random/src/lib.rs @@ -0,0 +1,28 @@ +extern crate rand; +use rand::Rng; + +pub trait GenRandom: Sized { + fn gen_random(rng: &mut impl Rng) -> Self; + fn gen_thread_random() -> Self { + let mut thread_rng = rand::thread_rng(); + Self::gen_random(&mut thread_rng) + } +} + +impl GenRandom for f32 { + fn gen_random(rng: &mut impl Rng) -> Self { + rng.gen_range(0.0..1.0) + } +} + +impl GenRandom for f64 { + fn gen_random(rng: &mut impl Rng) -> Self { + rng.gen_range(0.0..1.0) + } +} + +impl<T: GenRandom> GenRandom for Box<T> { + fn gen_random(rng: &mut impl Rng) -> Self { + Box::new(T::gen_random(rng)) + } +} |