pub enum RngAlgorithm {
XorShift,
ChaCha,
PassThrough,
Recorder,
// some variants omitted
}
Expand description
Identifies a particular RNG algorithm supported by proptest.
Proptest supports dynamic configuration of algorithms to allow it to
continue operating with persisted regression files and to allow the
configuration to be expressed in the Config
struct.
Variants§
XorShift
The XorShift algorithm. This was the default up through and including Proptest 0.9.0.
It is faster than ChaCha but produces lower quality randomness and has some pathological cases where it may fail to produce outputs that are random even to casual observation.
The seed must be exactly 16 bytes.
ChaCha
The ChaCha algorithm. This became the default with Proptest 0.9.1.
The seed must be exactly 32 bytes.
PassThrough
This is not an actual RNG algorithm, but instead returns data directly from its “seed”.
This is useful when Proptest is being driven from some other entropy source, such as a fuzzer.
If the seed is depleted, the RNG will return 0s forever.
Note that in cases where a new RNG is to be derived from an existing
one, the data is split evenly between them, regardless of how much
entropy is actually needed. This means that combinators like
prop_perturb
and prop_flat_map
can require extremely large inputs.
Recorder
This is equivalent to the ChaCha
RNG, with the addition that it
records the bytes used to create a value.
This is useful when Proptest is used for fuzzing, and a corpus of
initial inputs need to be created. Note that in these cases, you need
to use the TestRunner
API directly yourself instead of using the
proptest!
macro, as otherwise there is no way to obtain the bytes
this captures.
Trait Implementations§
Source§impl Clone for RngAlgorithm
impl Clone for RngAlgorithm
Source§fn clone(&self) -> RngAlgorithm
fn clone(&self) -> RngAlgorithm
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for RngAlgorithm
impl Debug for RngAlgorithm
Source§impl Default for RngAlgorithm
impl Default for RngAlgorithm
Source§impl Display for RngAlgorithm
impl Display for RngAlgorithm
Source§impl FromStr for RngAlgorithm
impl FromStr for RngAlgorithm
Source§impl PartialEq for RngAlgorithm
impl PartialEq for RngAlgorithm
impl Copy for RngAlgorithm
impl Eq for RngAlgorithm
impl StructuralPartialEq for RngAlgorithm
Auto Trait Implementations§
impl Freeze for RngAlgorithm
impl RefUnwindSafe for RngAlgorithm
impl Send for RngAlgorithm
impl Sync for RngAlgorithm
impl Unpin for RngAlgorithm
impl UnwindSafe for RngAlgorithm
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 1 byte
Size for each variant:
XorShift
: 0 bytesChaCha
: 0 bytesPassThrough
: 0 bytesRecorder
: 0 bytes_NonExhaustive
: 0 bytes