1 2 3 4 5 6 7 8 9 10 11
pub trait Random: Sized { fn random<G: RandomGen>(g: &mut G) -> Self; } pub trait RandomGen { fn gen_u32(&mut self) -> u32; fn gen_u64(&mut self) -> u64 { (self.gen_u32() as u64) << 32 | (self.gen_u32() as u64) } fn gen_f32(&mut self) -> f32; fn gen_f64(&mut self) -> f32; fn gen_bytes(&mut self, &mut [u8]) -> usize; }