Struct rand_core::block::BlockRng64[][src]

pub struct BlockRng64<R: BlockRngCore + ?Sized> {
    pub core: R,
    // some fields omitted
}
Expand description

A wrapper type implementing RngCore for some type implementing BlockRngCore with u64 array buffer; i.e. this can be used to implement a full RNG from just a generate function.

This is similar to BlockRng, but specialized for algorithms that operate on u64 values.

No whole generated u64 values are thrown away and all values are consumed in-order. next_u64 simply takes the next available u64 value. next_u32 is however a bit special: half of a u64 is consumed, leaving the other half in the buffer. If the next function called is next_u32 then the other half is then consumed, however both next_u64 and fill_bytes discard the rest of any half-consumed u64s when called.

fill_bytes and try_fill_bytes consume a whole number of u64 values. If the requested length is not a multiple of 8, some bytes will be discarded.

Fields

core: R
Expand description

The core part of the RNG, implementing the generate function.

Implementations

impl<R: BlockRngCore> BlockRng64<R>[src]

pub fn new(core: R) -> BlockRng64<R>[src]

Create a new BlockRng from an existing RNG implementing BlockRngCore. Results will be generated on first use.

pub fn index(&self) -> usize[src]

Get the index into the result buffer.

If this is equal to or larger than the size of the result buffer then the buffer is “empty” and generate() must be called to produce new results.

pub fn reset(&mut self)[src]

Reset the number of available results. This will force a new set of results to be generated on next use.

pub fn generate_and_set(&mut self, index: usize)[src]

Generate a new set of results immediately, setting the index to the given value.

Trait Implementations

impl<R: Clone + BlockRngCore + ?Sized> Clone for BlockRng64<R> where
    R::Results: Clone
[src]

fn clone(&self) -> BlockRng64<R>[src]

Returns a copy of the value. Read more

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

Performs copy-assignment from source. Read more

impl<R: BlockRngCore + Debug> Debug for BlockRng64<R>[src]

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

Formats the value using the given formatter. Read more

impl<R: BlockRngCore<Item = u64>> RngCore for BlockRng64<R> where
    <R as BlockRngCore>::Results: AsRef<[u64]> + AsMut<[u64]>, 
[src]

fn next_u32(&mut self) -> u32[src]

Return the next random u32. Read more

fn next_u64(&mut self) -> u64[src]

Return the next random u64. Read more

fn fill_bytes(&mut self, dest: &mut [u8])[src]

Fill dest with random data. Read more

fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), Error>[src]

Fill dest entirely with random data. Read more

impl<R: BlockRngCore + SeedableRng> SeedableRng for BlockRng64<R>[src]

type Seed = R::Seed

Seed type, which is restricted to types mutably-dereferencable as u8 arrays (we recommend [u8; N] for some N). Read more

fn from_seed(seed: Self::Seed) -> Self[src]

Create a new PRNG using the given seed. Read more

fn seed_from_u64(seed: u64) -> Self[src]

Create a new PRNG using a u64 seed. Read more

fn from_rng<S: RngCore>(rng: S) -> Result<Self, Error>[src]

Create a new PRNG seeded from another Rng. Read more

fn from_entropy() -> Self[src]

Creates a new instance of the RNG seeded via getrandom. Read more

Auto Trait Implementations

impl<R: ?Sized> RefUnwindSafe for BlockRng64<R> where
    R: RefUnwindSafe,
    <R as BlockRngCore>::Results: RefUnwindSafe

impl<R: ?Sized> Send for BlockRng64<R> where
    R: Send,
    <R as BlockRngCore>::Results: Send

impl<R: ?Sized> Sync for BlockRng64<R> where
    R: Sync,
    <R as BlockRngCore>::Results: Sync

impl<R: ?Sized> Unpin for BlockRng64<R> where
    R: Unpin,
    <R as BlockRngCore>::Results: Unpin

impl<R: ?Sized> UnwindSafe for BlockRng64<R> where
    R: UnwindSafe,
    <R as BlockRngCore>::Results: UnwindSafe

Blanket Implementations

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

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

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

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

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

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

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

pub fn from(t: T) -> T[src]

Performs the conversion.

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

pub fn into(self) -> U[src]

Performs the conversion.

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

type Owned = T

The resulting type after obtaining ownership.

pub fn to_owned(&self) -> T[src]

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

pub fn clone_into(&self, target: &mut T)[src]

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

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

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.

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

Performs the conversion.

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.

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

Performs the conversion.