From fddcac1488ef886ff7f45c5eb3822da40353407c Mon Sep 17 00:00:00 2001 From: Miguel Bartelsman Date: Fri, 3 Jul 2020 10:30:15 +0200 Subject: [PATCH] Update random() documentation (#994) Solves #993. Includes implementation details for easy peeking in IDEs --- src/lib.rs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index a8483945ecb..64851b73f36 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -113,6 +113,33 @@ use crate::distributions::{Distribution, Standard}; /// documentation of the entropy source and [`Standard`] for documentation of /// distributions and type-specific generation. /// +/// # Provided implementations +/// +/// The following types have provided implementations that +/// generate values with the following ranges and distributions: +/// +/// * Integers (`i32`, `u32`, `isize`, `usize`, etc.): Uniformly distributed +/// over all values of the type. +/// * `char`: Uniformly distributed over all Unicode scalar values, i.e. all +/// code points in the range `0...0x10_FFFF`, except for the range +/// `0xD800...0xDFFF` (the surrogate code points). This includes +/// unassigned/reserved code points. +/// * `bool`: Generates `false` or `true`, each with probability 0.5. +/// * Floating point types (`f32` and `f64`): Uniformly distributed in the +/// half-open range `[0, 1)`. See notes below. +/// * Wrapping integers (`Wrapping`), besides the type identical to their +/// normal integer variants. +/// +/// Also supported is the generation of the following +/// compound types where all component types are supported: +/// +/// * Tuples (up to 12 elements): each element is generated sequentially. +/// * Arrays (up to 32 elements): each element is generated sequentially; +/// see also [`Rng::fill`] which supports arbitrary array length for integer +/// types and tends to be faster for `u32` and smaller types. +/// * `Option` first generates a `bool`, and if true generates and returns +/// `Some(value)` where `value: T`, otherwise returning `None`. +/// /// # Examples /// /// ```