Struct ring::rand::SystemRandom

source ·
pub struct SystemRandom(());
Expand description

A secure random number generator where the random values come directly from the operating system.

“Directly from the operating system” here presently means “whatever the getrandom crate does” but that may change in the future. That roughly means calling libc’s getrandom function or whatever is analogous to that; see the getrandom crate’s documentation for more info.

A single SystemRandom may be shared across multiple threads safely.

new() is guaranteed to always succeed and to have low latency; it won’t try to open or read from a file or do similar things. The first call to fill() may block a substantial amount of time since any and all initialization is deferred to it. Therefore, it may be a good idea to call fill() once at a non-latency-sensitive time to minimize latency for future calls.

Tuple Fields§

§0: ()

Implementations§

source§

impl SystemRandom

source

pub fn new() -> Self

Constructs a new SystemRandom.

Trait Implementations§

source§

impl Clone for SystemRandom

source§

fn clone(&self) -> SystemRandom

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for SystemRandom

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl SecureRandom for SystemRandom

source§

fn fill_impl(&self, dest: &mut [u8]) -> Result<(), Unspecified>

Fills dest with random bytes.
source§

impl Sealed for SystemRandom

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> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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> SecureRandom for T
where T: SecureRandom,

source§

fn fill(&self, dest: &mut [u8]) -> Result<(), Unspecified>

Fills dest with random bytes.
source§

impl<T> ToOwned for T
where T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

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

source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.