1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
use embedded_hal::blocking::rng::Read; use esp8266::RNG; use void::Void; pub trait RngExt { fn rng(self) -> Rng; } impl RngExt for RNG { fn rng(self) -> Rng { Rng { rng: self } } } pub struct Rng { rng: RNG, } impl Read for Rng { type Error = Void; fn read(&mut self, buffer: &mut [u8]) -> Result<(), Self::Error> { for byte in buffer.iter_mut() { *byte = self.rng.rng.read().bits() as u8; } Ok(()) } }