pub struct BlockRng64<R>where
R: BlockRngCore + ?Sized,{
pub core: R,
/* private fields */
}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 consumes a whole number of u64 values. If the requested length
is not a multiple of 8, some bytes will be discarded.
Fields§
§core: RThe core part of the RNG, implementing the generate function.
Implementations§
Source§impl<R> BlockRng64<R>where
R: BlockRngCore,
impl<R> BlockRng64<R>where
R: BlockRngCore,
Sourcepub fn new(core: R) -> BlockRng64<R>
pub fn new(core: R) -> BlockRng64<R>
Create a new BlockRng from an existing RNG implementing
BlockRngCore. Results will be generated on first use.
Sourcepub fn index(&self) -> usize
pub fn index(&self) -> usize
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.
Sourcepub fn reset(&mut self)
pub fn reset(&mut self)
Reset the number of available results. This will force a new set of results to be generated on next use.
Sourcepub fn generate_and_set(&mut self, index: usize)
pub fn generate_and_set(&mut self, index: usize)
Generate a new set of results immediately, setting the index to the given value.
Trait Implementations§
Source§impl<R> Clone for BlockRng64<R>
impl<R> Clone for BlockRng64<R>
Source§fn clone(&self) -> BlockRng64<R>
fn clone(&self) -> BlockRng64<R>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<R> Debug for BlockRng64<R>where
R: BlockRngCore + Debug,
impl<R> Debug for BlockRng64<R>where
R: BlockRngCore + Debug,
Source§impl<'de, R> Deserialize<'de> for BlockRng64<R>
impl<'de, R> Deserialize<'de> for BlockRng64<R>
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<BlockRng64<R>, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<BlockRng64<R>, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl<R> RngCore for BlockRng64<R>where
R: BlockRngCore<Item = u64>,
impl<R> RngCore for BlockRng64<R>where
R: BlockRngCore<Item = u64>,
Source§impl<R> SeedableRng for BlockRng64<R>where
R: BlockRngCore + SeedableRng,
impl<R> SeedableRng for BlockRng64<R>where
R: BlockRngCore + SeedableRng,
Source§type Seed = <R as SeedableRng>::Seed
type Seed = <R as SeedableRng>::Seed
u8
arrays (we recommend [u8; N] for some N). Read moreSource§fn from_seed(seed: <BlockRng64<R> as SeedableRng>::Seed) -> BlockRng64<R>
fn from_seed(seed: <BlockRng64<R> as SeedableRng>::Seed) -> BlockRng64<R>
Source§fn seed_from_u64(seed: u64) -> BlockRng64<R>
fn seed_from_u64(seed: u64) -> BlockRng64<R>
u64 seed. Read moreSource§fn from_rng(rng: &mut impl RngCore) -> BlockRng64<R>
fn from_rng(rng: &mut impl RngCore) -> BlockRng64<R>
Rng. Read moreSource§fn try_from_rng<S>(
rng: &mut S,
) -> Result<BlockRng64<R>, <S as TryRngCore>::Error>where
S: TryRngCore,
fn try_from_rng<S>(
rng: &mut S,
) -> Result<BlockRng64<R>, <S as TryRngCore>::Error>where
S: TryRngCore,
Rng. Read moreSource§fn from_os_rng() -> Self
fn from_os_rng() -> Self
Source§impl<R> Serialize for BlockRng64<R>
impl<R> Serialize for BlockRng64<R>
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl<R> CryptoRng for BlockRng64<R>
Auto Trait Implementations§
impl<R> Freeze for BlockRng64<R>
impl<R> RefUnwindSafe for BlockRng64<R>
impl<R> Send for BlockRng64<R>
impl<R> Sync for BlockRng64<R>
impl<R> Unpin for BlockRng64<R>
impl<R> UnwindSafe for BlockRng64<R>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> PowerToOwned for T
impl<T> PowerToOwned for T
Source§impl<R> Rng for R
impl<R> Rng for R
Source§fn random<T>(&mut self) -> Twhere
StandardUniform: Distribution<T>,
fn random<T>(&mut self) -> Twhere
StandardUniform: Distribution<T>,
StandardUniform distribution. Read moreSource§fn random_iter<T>(self) -> Iter<StandardUniform, Self, T> ⓘ
fn random_iter<T>(self) -> Iter<StandardUniform, Self, T> ⓘ
Source§fn random_range<T, R>(&mut self, range: R) -> Twhere
T: SampleUniform,
R: SampleRange<T>,
fn random_range<T, R>(&mut self, range: R) -> Twhere
T: SampleUniform,
R: SampleRange<T>,
Source§fn random_bool(&mut self, p: f64) -> bool
fn random_bool(&mut self, p: f64) -> bool
p of being true. Read moreSource§fn random_ratio(&mut self, numerator: u32, denominator: u32) -> bool
fn random_ratio(&mut self, numerator: u32, denominator: u32) -> bool
numerator/denominator of being
true. Read moreSource§fn sample<T, D>(&mut self, distr: D) -> Twhere
D: Distribution<T>,
fn sample<T, D>(&mut self, distr: D) -> Twhere
D: Distribution<T>,
Source§fn sample_iter<T, D>(self, distr: D) -> Iter<D, Self, T> ⓘwhere
D: Distribution<T>,
Self: Sized,
fn sample_iter<T, D>(self, distr: D) -> Iter<D, Self, T> ⓘwhere
D: Distribution<T>,
Self: Sized,
Source§fn gen<T>(&mut self) -> Twhere
StandardUniform: Distribution<T>,
fn gen<T>(&mut self) -> Twhere
StandardUniform: Distribution<T>,
random to avoid conflict with the new gen keyword in Rust 2024.Rng::random.Source§fn gen_range<T, R>(&mut self, range: R) -> Twhere
T: SampleUniform,
R: SampleRange<T>,
fn gen_range<T, R>(&mut self, range: R) -> Twhere
T: SampleUniform,
R: SampleRange<T>,
random_rangeRng::random_range.Source§impl<R> TryRngCore for Rwhere
R: RngCore,
impl<R> TryRngCore for Rwhere
R: RngCore,
Source§type Error = Infallible
type Error = Infallible
Source§fn try_next_u32(&mut self) -> Result<u32, <R as TryRngCore>::Error>
fn try_next_u32(&mut self) -> Result<u32, <R as TryRngCore>::Error>
u32.Source§fn try_next_u64(&mut self) -> Result<u64, <R as TryRngCore>::Error>
fn try_next_u64(&mut self) -> Result<u64, <R as TryRngCore>::Error>
u64.Source§fn try_fill_bytes(
&mut self,
dst: &mut [u8],
) -> Result<(), <R as TryRngCore>::Error>
fn try_fill_bytes( &mut self, dst: &mut [u8], ) -> Result<(), <R as TryRngCore>::Error>
dest entirely with random data.Source§fn read_adapter(&mut self) -> RngReadAdapter<'_, Self> ⓘwhere
Self: Sized,
fn read_adapter(&mut self) -> RngReadAdapter<'_, Self> ⓘwhere
Self: Sized,
RngCore to a RngReadAdapter.