rustmax::rand_pcg::rand_core::block

Struct BlockRng64

Source
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: R

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

Implementations§

Source§

impl<R> BlockRng64<R>
where R: BlockRngCore,

Source

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

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

Source

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.

Source

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.

Source

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>

Source§

fn clone(&self) -> BlockRng64<R>

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<R> Debug for BlockRng64<R>
where R: BlockRngCore + Debug,

Source§

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

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

impl<'de, R> Deserialize<'de> for BlockRng64<R>
where R: BlockRngCore + Deserialize<'de> + ?Sized, <R as BlockRngCore>::Results: Deserialize<'de>,

Source§

fn deserialize<__D>( __deserializer: __D, ) -> Result<BlockRng64<R>, <__D as Deserializer<'de>>::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl<R> RngCore for BlockRng64<R>
where R: BlockRngCore<Item = u64>,

Source§

fn next_u32(&mut self) -> u32

Return the next random u32. Read more
Source§

fn next_u64(&mut self) -> u64

Return the next random u64. Read more
Source§

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

Fill dest with random data. Read more
Source§

impl<R> SeedableRng for BlockRng64<R>

Source§

type Seed = <R as SeedableRng>::Seed

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

fn from_seed(seed: <BlockRng64<R> as SeedableRng>::Seed) -> BlockRng64<R>

Create a new PRNG using the given seed. Read more
Source§

fn seed_from_u64(seed: u64) -> BlockRng64<R>

Create a new PRNG using a u64 seed. Read more
Source§

fn from_rng(rng: &mut impl RngCore) -> BlockRng64<R>

Create a new PRNG seeded from an infallible Rng. Read more
Source§

fn try_from_rng<S>( rng: &mut S, ) -> Result<BlockRng64<R>, <S as TryRngCore>::Error>
where S: TryRngCore,

Create a new PRNG seeded from a potentially fallible Rng. Read more
Source§

fn from_os_rng() -> Self

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

fn try_from_os_rng() -> Result<Self, Error>

Creates a new instance of the RNG seeded via getrandom without unwrapping potential getrandom errors. Read more
Source§

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,

Serialize this value into the given Serde serializer. Read more
Source§

impl<R> CryptoRng for BlockRng64<R>
where R: CryptoBlockRng<Item = u64> + BlockRngCore,

Auto Trait Implementations§

§

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

§

impl<R> RefUnwindSafe for BlockRng64<R>

§

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

§

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

§

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

§

impl<R> UnwindSafe for BlockRng64<R>

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 u8)

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

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize = _

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

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

Source§

fn C(&self) -> T

Source§

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

Source§

type Owned = <T as ToOwned>::Owned

Source§

fn O(&self) -> <T as QuickToOwned>::Owned

Source§

impl<R> Rng for R
where R: RngCore + ?Sized,

Source§

fn random<T>(&mut self) -> T

Return a random value via the StandardUniform distribution. Read more
Source§

fn random_iter<T>(self) -> Iter<StandardUniform, Self, T>

Return an iterator over random variates Read more
Source§

fn random_range<T, R>(&mut self, range: R) -> T
where T: SampleUniform, R: SampleRange<T>,

Generate a random value in the given range. Read more
Source§

fn random_bool(&mut self, p: f64) -> bool

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

fn random_ratio(&mut self, numerator: u32, denominator: u32) -> bool

Return a bool with a probability of numerator/denominator of being true. Read more
Source§

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

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

fn sample_iter<T, D>(self, distr: D) -> Iter<D, Self, T>
where D: Distribution<T>, Self: Sized,

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

fn fill<T>(&mut self, dest: &mut T)
where T: Fill + ?Sized,

Fill any type implementing Fill with random data Read more
Source§

fn gen<T>(&mut self) -> T

👎Deprecated since 0.9.0: Renamed to random to avoid conflict with the new gen keyword in Rust 2024.
Alias for Rng::random.
Source§

fn gen_range<T, R>(&mut self, range: R) -> T
where T: SampleUniform, R: SampleRange<T>,

👎Deprecated since 0.9.0: Renamed to random_range
Source§

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

👎Deprecated since 0.9.0: Renamed to random_bool
Alias for Rng::random_bool.
Source§

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

👎Deprecated since 0.9.0: Renamed to random_ratio
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
Source§

impl<R> TryRngCore for R
where R: RngCore,

Source§

type Error = Infallible

The type returned in the event of a RNG error.
Source§

fn try_next_u32(&mut self) -> Result<u32, <R as TryRngCore>::Error>

Return the next random u32.
Source§

fn try_next_u64(&mut self) -> Result<u64, <R as TryRngCore>::Error>

Return the next random u64.
Source§

fn try_fill_bytes( &mut self, dst: &mut [u8], ) -> Result<(), <R as TryRngCore>::Error>

Fill dest entirely with random data.
Source§

fn unwrap_err(self) -> UnwrapErr<Self>
where Self: Sized,

Wrap RNG with the UnwrapErr wrapper.
Source§

fn read_adapter(&mut self) -> RngReadAdapter<'_, Self>
where Self: Sized,

Convert an RngCore to a RngReadAdapter.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T

Source§

impl<R> TryCryptoRng for R
where R: CryptoRng,