Enum proptest::test_runner::RngAlgorithm

source ·
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

source§

fn clone(&self) -> RngAlgorithm

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for RngAlgorithm

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for RngAlgorithm

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl Display for RngAlgorithm

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl FromStr for RngAlgorithm

§

type Err = ()

The associated error which can be returned from parsing.
source§

fn from_str(s: &str) -> Result<Self, ()>

Parses a string s to return a value of this type. Read more
source§

impl PartialEq for RngAlgorithm

source§

fn eq(&self, other: &RngAlgorithm) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for RngAlgorithm

source§

impl Eq for RngAlgorithm

source§

impl StructuralPartialEq for RngAlgorithm

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> CloneToUninit for T
where T: Copy,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V