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);
    }
}