Function rand_core::impls::fill_via_u32_chunks
source · pub fn fill_via_u32_chunks(src: &[u32], dest: &mut [u8]) -> (usize, usize)Expand description
Implement fill_bytes by reading chunks from the output buffer of a block
based RNG.
The return values are (consumed_u32, filled_u8).
filled_u8 is the number of filled bytes in dest, which may be less than
the length of dest.
consumed_u32 is the number of words consumed from src, which is the same
as filled_u8 / 4 rounded up.
Example
(from IsaacRng)
ⓘ
fn fill_bytes(&mut self, dest: &mut [u8]) {
let mut read_len = 0;
while read_len < dest.len() {
if self.index >= self.rsl.len() {
self.isaac();
}
let (consumed_u32, filled_u8) =
impls::fill_via_u32_chunks(&mut self.rsl[self.index..],
&mut dest[read_len..]);
self.index += consumed_u32;
read_len += filled_u8;
}
}