Skip to main content

EntropySource

Struct EntropySource 

Source
pub struct EntropySource { /* private fields */ }
Expand description

This is a wrapper that sets up the boot entropy source.

On chips with a TRNG this holds the SAR ADC entropy source that init_entropy() enables. The RNG register only has randomness while a source is active, and the ADC source is what occurs on boot.

Dropping this guard switches off the source. This handover is required because the ADC source needs to be switched off “before RF subsystem features, ADC, or I2S (ESP32 only) are initialized” and that it’s “not safe to use if any other subsystem is accessing the RF subsystem or the ADC at the same time”.

On the ESP32-C5/C61, there is no TRNG driver yet, so the guard is empty.

See: https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/system/random.html

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.