Function fill_via_u32_chunks

Source
pub fn fill_via_u32_chunks(src: &mut [u32], dest: &mut [u8]) -> (usize, usize)
๐Ÿ‘ŽDeprecated since 0.9.3: use BlockRng instead
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).

src is not modified; it is taken as a &mut reference for backward compatibility with previous versions that did change it.

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;
    }
}