# rand_core::impls - Rust
Helper functions for implementing `RngCore` functions.
Keywords: rust, rustlang, rust-lang, impls

# 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

fill_bytes_via_next

Implement `fill_bytes` via `next_u64` and `next_u32`, little-endian order.

fill_via_u32_chunks

Implement `fill_bytes` by reading chunks from the output buffer of a block based RNG.

fill_via_u64_chunks

Implement `fill_bytes` by reading chunks from the output buffer of a block based RNG.

next_u32_via_fill

Implement `next_u32` via `fill_bytes`, little-endian order.

next_u64_via_fill

Implement `next_u64` via `fill_bytes`, little-endian order.

next_u64_via_u32

Implement `next_u64` via `next_u32`, little-endian order.