Module rand_core::block [−][src]
The BlockRngCore
trait and implementation helpers
The BlockRngCore
trait exists to assist in the implementation of RNGs
which generate a block of data in a cache instead of returning generated
values directly.
Usage of this trait is optional, but provides two advantages:
implementations only need to concern themselves with generation of the
block, not the various RngCore
methods (especially fill_bytes
, where
the optimal implementations are not trivial), and this allows
ReseedingRng
(see rand
crate) perform periodic
reseeding with very low overhead.
Example
use rand_core::{RngCore, SeedableRng}; use rand_core::block::{BlockRngCore, BlockRng}; struct MyRngCore; impl BlockRngCore for MyRngCore { type Item = u32; type Results = [u32; 16]; fn generate(&mut self, results: &mut Self::Results) { unimplemented!() } } impl SeedableRng for MyRngCore { type Seed = [u8; 32]; fn from_seed(seed: Self::Seed) -> Self { unimplemented!() } } // optionally, also implement CryptoRng for MyRngCore // Final RNG. let mut rng = BlockRng::<MyRngCore>::seed_from_u64(0); println!("First value: {}", rng.next_u32());
Structs
BlockRng | A wrapper type implementing |
BlockRng64 | A wrapper type implementing |
Traits
BlockRngCore | A trait for RNGs which do not generate random numbers individually, but in
blocks (typically |