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: RExpand description
The core part of the RNG, implementing the generate function.
Implementations
impl<R: BlockRngCore> BlockRng64<R>[src]
impl<R: BlockRngCore> BlockRng64<R>[src]pub fn new(core: R) -> 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]
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]
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]
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]
impl<R: Clone + BlockRngCore + ?Sized> Clone for BlockRng64<R> where
    R::Results: Clone, [src]fn clone(&self) -> BlockRng64<R>[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]
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]
impl<R: BlockRngCore + Debug> Debug for BlockRng64<R>[src]impl<R: BlockRngCore<Item = u64>> RngCore for BlockRng64<R> where
    <R as BlockRngCore>::Results: AsRef<[u64]> + AsMut<[u64]>, [src]
impl<R: BlockRngCore<Item = u64>> RngCore for BlockRng64<R> where
    <R as BlockRngCore>::Results: AsRef<[u64]> + AsMut<[u64]>, [src]impl<R: BlockRngCore + SeedableRng> SeedableRng for BlockRng64<R>[src]
impl<R: BlockRngCore + SeedableRng> SeedableRng for BlockRng64<R>[src]type Seed = R::Seed
type Seed = R::SeedSeed type, which is restricted to types mutably-dereferencable as u8
arrays (we recommend [u8; N] for some N). Read more
fn seed_from_u64(seed: u64) -> Self[src]
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]
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]
fn from_entropy() -> Self[src]Auto Trait Implementations
impl<R: ?Sized> RefUnwindSafe for BlockRng64<R> where
    R: RefUnwindSafe,
    <R as BlockRngCore>::Results: RefUnwindSafe, 
R: RefUnwindSafe,
<R as BlockRngCore>::Results: RefUnwindSafe,
impl<R: ?Sized> Send for BlockRng64<R> where
    R: Send,
    <R as BlockRngCore>::Results: Send, 
R: Send,
<R as BlockRngCore>::Results: Send,
impl<R: ?Sized> Sync for BlockRng64<R> where
    R: Sync,
    <R as BlockRngCore>::Results: Sync, 
R: Sync,
<R as BlockRngCore>::Results: Sync,
impl<R: ?Sized> Unpin for BlockRng64<R> where
    R: Unpin,
    <R as BlockRngCore>::Results: Unpin, 
R: Unpin,
<R as BlockRngCore>::Results: Unpin,
impl<R: ?Sized> UnwindSafe for BlockRng64<R> where
    R: UnwindSafe,
    <R as BlockRngCore>::Results: UnwindSafe, 
R: UnwindSafe,
<R as BlockRngCore>::Results: UnwindSafe,
Blanket Implementations
impl<T> BorrowMut<T> for T where
    T: ?Sized, [src]
impl<T> BorrowMut<T> for T where
    T: ?Sized, [src]pub fn borrow_mut(&mut self) -> &mut T[src]
pub fn borrow_mut(&mut self) -> &mut T[src]Mutably borrows from an owned value. Read more
impl<T> ToOwned for T where
    T: Clone, [src]
impl<T> ToOwned for T where
    T: Clone, [src]type Owned = T
type Owned = TThe resulting type after obtaining ownership.
pub fn to_owned(&self) -> T[src]
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]
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