1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
//! Random number generator. extern crate rand; use self::rand::{OsRng, Rng}; use traits::RandomGen; /// A random number generator that retrieves randomness straight from the operating system. pub struct RandomOS { rng: OsRng, } impl Default for RandomOS { fn default() -> RandomOS { RandomOS { rng: OsRng::new().unwrap() } } } impl RandomGen for RandomOS { fn fill_bytes(&mut self, out: &mut [u8]) { self.rng.fill_bytes(out); } }