Module rand_core::impls

source ·
Expand description

Helper functions for implementing RngCore functions.

For cross-platform reproducibility, these functions all use Little Endian: least-significant part first. For example, next_u64_via_u32 takes u32 values x, y, then outputs (y << 32) | x. To implement next_u32 from next_u64 in little-endian order, one should use next_u64() as u32.

Byte-swapping (like the std to_le functions) is only needed to convert to/from byte sequences, and since its purpose is reproducibility, non-reproducible sources (e.g. OsRng) need not bother with it.

Functions

Implement fill_bytes via next_u64 and next_u32, little-endian order.
Implement fill_bytes by reading chunks from the output buffer of a block based RNG.
Implement fill_bytes by reading chunks from the output buffer of a block based RNG.
Implement next_u32 via fill_bytes, little-endian order.
Implement next_u64 via fill_bytes, little-endian order.
Implement next_u64 via next_u32, little-endian order.