[][src]Struct rand::rngs::OsRng

pub struct OsRng;

A random number generator that retrieves randomness from from the operating system.

This is a zero-sized struct. It can be freely constructed with OsRng.

The implementation is provided by the getrandom crate. Refer to getrandom documentation for details.

Blocking and error handling

It is possible that when used during early boot the first call to OsRng will block until the system's RNG is initialised. It is also possible (though highly unlikely) for OsRng to fail on some platforms, most likely due to system mis-configuration.

After the first successful call, it is highly unlikely that failures or significant delays will occur (although performance should be expected to be much slower than a user-space PRNG).

Usage example

use rand::rngs::{StdRng, OsRng};
use rand::{RngCore, SeedableRng};

let mut key = [0u8; 16];
OsRng.fill_bytes(&mut key);
let random_u64 = OsRng.next_u64();
 
// OsRng is especially useful for seeding other RNGs (see also from_entropy)
let mut rng = StdRng::from_rng(OsRng).unwrap();
let _ = rng.next_u32();

Methods

impl OsRng[src]

pub fn new() -> Result<OsRng, Error>[src]

Deprecated since 0.7.0:

replace OsRng::new().unwrap() with just OsRng

Create a new OsRng.

Trait Implementations

impl Clone for OsRng[src]

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl Default for OsRng[src]

impl Copy for OsRng[src]

impl Debug for OsRng[src]

impl RngCore for OsRng[src]

impl CryptoRng for OsRng[src]

Auto Trait Implementations

impl Send for OsRng

impl Sync for OsRng

Blanket Implementations

impl<R> Rng for R where
    R: RngCore + ?Sized
[src]

fn gen<T>(&mut self) -> T where
    Standard: Distribution<T>, 
[src]

Return a random value supporting the [Standard] distribution. Read more

fn gen_range<T: SampleUniform, B1, B2>(&mut self, low: B1, high: B2) -> T where
    B1: SampleBorrow<T> + Sized,
    B2: SampleBorrow<T> + Sized
[src]

Generate a random value in the range [low, high), i.e. inclusive of low and exclusive of high. Read more

fn sample<T, D: Distribution<T>>(&mut self, distr: D) -> T[src]

Sample a new value, using the given distribution. Read more

Important traits for DistIter<D, R, T>
fn sample_iter<T, D>(self, distr: D) -> DistIter<D, Self, T> where
    D: Distribution<T>,
    Self: Sized
[src]

Create an iterator that generates values using the given distribution. Read more

fn fill<T: AsByteSliceMut + ?Sized>(&mut self, dest: &mut T)[src]

Fill dest entirely with random bytes (uniform value distribution), where dest is any type supporting [AsByteSliceMut], namely slices and arrays over primitive integer types (i8, i16, u32, etc.). Read more

fn try_fill<T: AsByteSliceMut + ?Sized>(
    &mut self,
    dest: &mut T
) -> Result<(), Error>
[src]

Fill dest entirely with random bytes (uniform value distribution), where dest is any type supporting [AsByteSliceMut], namely slices and arrays over primitive integer types (i8, i16, u32, etc.). Read more

fn gen_bool(&mut self, p: f64) -> bool[src]

Return a bool with a probability p of being true. Read more

fn gen_ratio(&mut self, numerator: u32, denominator: u32) -> bool[src]

Return a bool with a probability of numerator/denominator of being true. I.e. gen_ratio(2, 3) has chance of 2 in 3, or about 67%, of returning true. If numerator == denominator, then the returned value is guaranteed to be true. If numerator == 0, then the returned value is guaranteed to be false. Read more

impl<T> From<T> for T[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 
[src]