Skip to content

Commit a23a0b8

Browse files
committed
Add nonblocking RNG trait
1 parent a5c0e3c commit a23a0b8

File tree

3 files changed

+20
-0
lines changed

3 files changed

+20
-0
lines changed

src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -694,6 +694,7 @@ pub mod blocking;
694694
pub mod digital;
695695
pub mod fmt;
696696
pub mod prelude;
697+
pub mod rng;
697698
pub mod serial;
698699
pub mod spi;
699700
pub mod timer;

src/prelude.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ pub use digital::OutputPin as _embedded_hal_digital_OutputPin;
2525
#[cfg(feature = "unproven")]
2626
#[allow(deprecated)]
2727
pub use digital::ToggleableOutputPin as _embedded_hal_digital_ToggleableOutputPin;
28+
#[cfg(feature = "unproven")]
29+
pub use rng::Read as _embedded_hal_rng_Read;
2830
pub use serial::Read as _embedded_hal_serial_Read;
2931
pub use serial::Write as _embedded_hal_serial_Write;
3032
pub use spi::FullDuplex as _embedded_hal_spi_FullDuplex;

src/rng.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
//! Random Number Generator Interface
2+
3+
#[cfg(feature = "unproven")]
4+
use nb;
5+
6+
/// Nonblocking stream of random bytes.
7+
#[cfg(feature = "unproven")]
8+
// reason: No implementation or users yet
9+
pub trait Read {
10+
/// An enumeration of RNG errors.
11+
///
12+
/// For infallible implementations, will be `Void`
13+
type Error;
14+
15+
/// Get a number of bytes from the RNG.
16+
fn read(&mut self, buf: &mut [u8]) -> nb::Result<usize, Self::Error>;
17+
}

0 commit comments

Comments
 (0)