Struct oberon::inner_types::elliptic_curve::bigint::rand_core::block::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 u64
s 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
The 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>where
R: Clone + BlockRngCore + ?Sized,
<R as BlockRngCore>::Results: Clone,
impl<R> Clone for BlockRng64<R>where R: Clone + BlockRngCore + ?Sized, <R as BlockRngCore>::Results: Clone,
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<R> RngCore for BlockRng64<R>where
R: BlockRngCore<Item = u64>,
<R as BlockRngCore>::Results: AsRef<[u64]> + AsMut<[u64]>,
impl<R> RngCore for BlockRng64<R>where R: BlockRngCore<Item = u64>, <R as BlockRngCore>::Results: AsRef<[u64]> + AsMut<[u64]>,
source§fn fill_bytes(&mut self, dest: &mut [u8])
fn fill_bytes(&mut self, dest: &mut [u8])
dest
with random data. Read moresource§impl<R> SeedableRng for BlockRng64<R>where
R: BlockRngCore + SeedableRng,
impl<R> SeedableRng for BlockRng64<R>where R: BlockRngCore + SeedableRng,
§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 moreAuto 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§
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
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where &'a Self: for<'a> IntoIterator,
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere Self: Borrow<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> Rwhere Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere Self: AsRef<U>, U: 'a + ?Sized, R: 'a,
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere Self: AsMut<U>, U: 'a + ?Sized, R: 'a,
self
, then passes self.as_mut()
into the pipe
function.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere Self: Deref<Target = T>, T: ?Sized,
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere Self: DerefMut<Target = T> + Deref, T: ?Sized,
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
.tap_ref_mut()
only in debug builds, and is erased in release
builds.