ValueGenerator

Trait ValueGenerator 

Source
pub trait ValueGenerator: Sized {
    type Output: 'static;

    // Required method
    fn generate<D>(&self, driver: &mut D) -> Option<Self::Output>
       where D: Driver;

    // Provided methods
    fn mutate<D>(&self, driver: &mut D, value: &mut Self::Output) -> Option<()>
       where D: Driver { ... }
    fn driver_cache<D>(&self, driver: &mut D, value: Self::Output)
       where D: Driver { ... }
    fn map_gen<F, T>(self, map: F) -> MapGenerator<Self, F>
       where F: Fn(Self::Output) -> T { ... }
    fn and_then_gen<F, T>(self, and_then: F) -> AndThenGenerator<Self, F>
       where F: Fn(Self::Output) -> T,
             T: ValueGenerator { ... }
    fn filter_gen<F>(self, filter: F) -> FilterGenerator<Self, F>
       where F: Fn(&Self::Output) -> bool { ... }
    fn filter_map_gen<F, T>(self, filter_map: F) -> FilterMapGenerator<Self, F>
       where F: Fn(Self::Output) -> Option<T> { ... }
}
Expand description

Generate a value with a parameterized generator

Required Associated Types§

Source

type Output: 'static

Required Methods§

Source

fn generate<D>(&self, driver: &mut D) -> Option<Self::Output>
where D: Driver,

Generates a value with the given driver

Provided Methods§

Source

fn mutate<D>(&self, driver: &mut D, value: &mut Self::Output) -> Option<()>
where D: Driver,

Mutates an existing value with the given driver

Source

fn driver_cache<D>(&self, driver: &mut D, value: Self::Output)
where D: Driver,

Source

fn map_gen<F, T>(self, map: F) -> MapGenerator<Self, F>
where F: Fn(Self::Output) -> T,

Map the value of a generator

Source

fn and_then_gen<F, T>(self, and_then: F) -> AndThenGenerator<Self, F>
where F: Fn(Self::Output) -> T, T: ValueGenerator,

Map the value of a generator with a new generator

Source

fn filter_gen<F>(self, filter: F) -> FilterGenerator<Self, F>
where F: Fn(&Self::Output) -> bool,

Filter the value of a generator

Source

fn filter_map_gen<F, T>(self, filter_map: F) -> FilterMapGenerator<Self, F>
where F: Fn(Self::Output) -> Option<T>,

Filter the value of a generator and map it to something else

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl ValueGenerator for bool

Source§

type Output = bool

Source§

fn generate<D>( &self, _driver: &mut D, ) -> Option<<bool as ValueGenerator>::Output>
where D: Driver,

Source§

impl ValueGenerator for char

Source§

type Output = char

Source§

fn generate<D>(&self, _driver: &mut D) -> Option<char>
where D: Driver,

Source§

impl ValueGenerator for f32

Source§

type Output = f32

Source§

fn generate<D>(&self, driver: &mut D) -> Option<f32>
where D: Driver,

Source§

impl ValueGenerator for f64

Source§

type Output = f64

Source§

fn generate<D>(&self, driver: &mut D) -> Option<f64>
where D: Driver,

Source§

impl ValueGenerator for i8

Source§

type Output = i8

Source§

fn generate<D>(&self, driver: &mut D) -> Option<i8>
where D: Driver,

Source§

impl ValueGenerator for i16

Source§

type Output = i16

Source§

fn generate<D>(&self, driver: &mut D) -> Option<i16>
where D: Driver,

Source§

impl ValueGenerator for i32

Source§

type Output = i32

Source§

fn generate<D>(&self, driver: &mut D) -> Option<i32>
where D: Driver,

Source§

impl ValueGenerator for i64

Source§

type Output = i64

Source§

fn generate<D>(&self, driver: &mut D) -> Option<i64>
where D: Driver,

Source§

impl ValueGenerator for i128

Source§

type Output = i128

Source§

fn generate<D>(&self, driver: &mut D) -> Option<i128>
where D: Driver,

Source§

impl ValueGenerator for isize

Source§

type Output = isize

Source§

fn generate<D>(&self, driver: &mut D) -> Option<isize>
where D: Driver,

Source§

impl ValueGenerator for u8

Source§

type Output = u8

Source§

fn generate<D>(&self, driver: &mut D) -> Option<u8>
where D: Driver,

Source§

impl ValueGenerator for u16

Source§

type Output = u16

Source§

fn generate<D>(&self, driver: &mut D) -> Option<u16>
where D: Driver,

Source§

impl ValueGenerator for u32

Source§

type Output = u32

Source§

fn generate<D>(&self, driver: &mut D) -> Option<u32>
where D: Driver,

Source§

impl ValueGenerator for u64

Source§

type Output = u64

Source§

fn generate<D>(&self, driver: &mut D) -> Option<u64>
where D: Driver,

Source§

impl ValueGenerator for u128

Source§

type Output = u128

Source§

fn generate<D>(&self, driver: &mut D) -> Option<u128>
where D: Driver,

Source§

impl ValueGenerator for ()

Source§

type Output = ()

Source§

fn generate<D>(&self, _driver: &mut D) -> Option<()>
where D: Driver,

Source§

impl ValueGenerator for usize

Source§

type Output = usize

Source§

fn generate<D>(&self, driver: &mut D) -> Option<usize>
where D: Driver,

Source§

impl<A> ValueGenerator for (A,)
where A: ValueGenerator,

Source§

type Output = (<A as ValueGenerator>::Output,)

Source§

fn generate<D_>( &self, driver: &mut D_, ) -> Option<<(A,) as ValueGenerator>::Output>
where D_: Driver,

Source§

fn mutate<D_>( &self, driver: &mut D_, value: &mut <(A,) as ValueGenerator>::Output, ) -> Option<()>
where D_: Driver,

Source§

impl<AA, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z> ValueGenerator for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA)

Source§

impl<AB, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA> ValueGenerator for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB)

Source§

impl<AC, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB> ValueGenerator for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC)

Source§

impl<AD, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC> ValueGenerator for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD)

Source§

impl<AE, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD> ValueGenerator for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE)

Source§

impl<AF, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE> ValueGenerator for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF)

Source§

impl<AG, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF> ValueGenerator for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG)

Source§

impl<B, A> ValueGenerator for (A, B)

Source§

type Output = (<A as ValueGenerator>::Output, <B as ValueGenerator>::Output)

Source§

fn generate<D_>( &self, driver: &mut D_, ) -> Option<<(A, B) as ValueGenerator>::Output>
where D_: Driver,

Source§

fn mutate<D_>( &self, driver: &mut D_, value: &mut <(A, B) as ValueGenerator>::Output, ) -> Option<()>
where D_: Driver,

Source§

impl<C, A, B> ValueGenerator for (A, B, C)

Source§

type Output = (<A as ValueGenerator>::Output, <B as ValueGenerator>::Output, <C as ValueGenerator>::Output)

Source§

fn generate<D_>( &self, driver: &mut D_, ) -> Option<<(A, B, C) as ValueGenerator>::Output>
where D_: Driver,

Source§

fn mutate<D_>( &self, driver: &mut D_, value: &mut <(A, B, C) as ValueGenerator>::Output, ) -> Option<()>
where D_: Driver,

Source§

impl<D, A, B, C> ValueGenerator for (A, B, C, D)

Source§

type Output = (<A as ValueGenerator>::Output, <B as ValueGenerator>::Output, <C as ValueGenerator>::Output, <D as ValueGenerator>::Output)

Source§

fn generate<D_>( &self, driver: &mut D_, ) -> Option<<(A, B, C, D) as ValueGenerator>::Output>
where D_: Driver,

Source§

fn mutate<D_>( &self, driver: &mut D_, value: &mut <(A, B, C, D) as ValueGenerator>::Output, ) -> Option<()>
where D_: Driver,

Source§

impl<E, A, B, C, D> ValueGenerator for (A, B, C, D, E)

Source§

type Output = (<A as ValueGenerator>::Output, <B as ValueGenerator>::Output, <C as ValueGenerator>::Output, <D as ValueGenerator>::Output, <E as ValueGenerator>::Output)

Source§

fn generate<D_>( &self, driver: &mut D_, ) -> Option<<(A, B, C, D, E) as ValueGenerator>::Output>
where D_: Driver,

Source§

fn mutate<D_>( &self, driver: &mut D_, value: &mut <(A, B, C, D, E) as ValueGenerator>::Output, ) -> Option<()>
where D_: Driver,

Source§

impl<F, A, B, C, D, E> ValueGenerator for (A, B, C, D, E, F)

Source§

type Output = (<A as ValueGenerator>::Output, <B as ValueGenerator>::Output, <C as ValueGenerator>::Output, <D as ValueGenerator>::Output, <E as ValueGenerator>::Output, <F as ValueGenerator>::Output)

Source§

fn generate<D_>( &self, driver: &mut D_, ) -> Option<<(A, B, C, D, E, F) as ValueGenerator>::Output>
where D_: Driver,

Source§

fn mutate<D_>( &self, driver: &mut D_, value: &mut <(A, B, C, D, E, F) as ValueGenerator>::Output, ) -> Option<()>
where D_: Driver,

Source§

impl<G, A, B, C, D, E, F> ValueGenerator for (A, B, C, D, E, F, G)

Source§

impl<G, const LEN: usize> ValueGenerator for [G; LEN]
where G: ValueGenerator,

Source§

type Output = [<G as ValueGenerator>::Output; LEN]

Source§

fn generate<D>( &self, driver: &mut D, ) -> Option<<[G; LEN] as ValueGenerator>::Output>
where D: Driver,

Source§

fn mutate<D>( &self, driver: &mut D, value: &mut <[G; LEN] as ValueGenerator>::Output, ) -> Option<()>
where D: Driver,

Source§

impl<H, A, B, C, D, E, F, G> ValueGenerator for (A, B, C, D, E, F, G, H)

Source§

impl<I, A, B, C, D, E, F, G, H> ValueGenerator for (A, B, C, D, E, F, G, H, I)

Source§

impl<J, A, B, C, D, E, F, G, H, I> ValueGenerator for (A, B, C, D, E, F, G, H, I, J)

Source§

impl<K, A, B, C, D, E, F, G, H, I, J> ValueGenerator for (A, B, C, D, E, F, G, H, I, J, K)

Source§

impl<L, A, B, C, D, E, F, G, H, I, J, K> ValueGenerator for (A, B, C, D, E, F, G, H, I, J, K, L)

Source§

impl<M, A, B, C, D, E, F, G, H, I, J, K, L> ValueGenerator for (A, B, C, D, E, F, G, H, I, J, K, L, M)

Source§

impl<N, A, B, C, D, E, F, G, H, I, J, K, L, M> ValueGenerator for (A, B, C, D, E, F, G, H, I, J, K, L, M, N)

Source§

impl<O, A, B, C, D, E, F, G, H, I, J, K, L, M, N> ValueGenerator for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)

Source§

impl<P, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O> ValueGenerator for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)

Source§

impl<Q, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P> ValueGenerator for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q)

Source§

impl<R, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q> ValueGenerator for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R)

Source§

impl<S, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R> ValueGenerator for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S)

Source§

impl<T> ValueGenerator for (Bound<T>, Bound<T>)
where T: BoundedValue,

Source§

type Output = T

Source§

fn generate<D>( &self, driver: &mut D, ) -> Option<<(Bound<T>, Bound<T>) as ValueGenerator>::Output>
where D: Driver,

Source§

fn mutate<D>( &self, driver: &mut D, value: &mut <(Bound<T>, Bound<T>) as ValueGenerator>::Output, ) -> Option<()>
where D: Driver,

Source§

impl<T> ValueGenerator for &T
where T: ValueGenerator,

Source§

type Output = <T as ValueGenerator>::Output

Source§

fn generate<D>(&self, driver: &mut D) -> Option<<&T as ValueGenerator>::Output>
where D: Driver,

Source§

fn mutate<D>( &self, driver: &mut D, value: &mut <&T as ValueGenerator>::Output, ) -> Option<()>
where D: Driver,

Source§

fn driver_cache<D>(&self, driver: &mut D, value: <&T as ValueGenerator>::Output)
where D: Driver,

Source§

impl<T> ValueGenerator for PhantomData<T>
where T: 'static,

Source§

type Output = PhantomData<T>

Source§

fn generate<D>( &self, _driver: &mut D, ) -> Option<<PhantomData<T> as ValueGenerator>::Output>
where D: Driver,

Source§

impl<T> ValueGenerator for Range<T>
where T: BoundedValue,

Source§

type Output = T

Source§

fn generate<D>( &self, driver: &mut D, ) -> Option<<Range<T> as ValueGenerator>::Output>
where D: Driver,

Source§

fn mutate<D>( &self, driver: &mut D, value: &mut <Range<T> as ValueGenerator>::Output, ) -> Option<()>
where D: Driver,

Source§

impl<T> ValueGenerator for RangeFrom<T>
where T: BoundedValue,

Source§

type Output = T

Source§

fn generate<D>( &self, driver: &mut D, ) -> Option<<RangeFrom<T> as ValueGenerator>::Output>
where D: Driver,

Source§

fn mutate<D>( &self, driver: &mut D, value: &mut <RangeFrom<T> as ValueGenerator>::Output, ) -> Option<()>
where D: Driver,

Source§

impl<T> ValueGenerator for RangeInclusive<T>
where T: BoundedValue,

Source§

type Output = T

Source§

fn generate<D>( &self, driver: &mut D, ) -> Option<<RangeInclusive<T> as ValueGenerator>::Output>
where D: Driver,

Source§

fn mutate<D>( &self, driver: &mut D, value: &mut <RangeInclusive<T> as ValueGenerator>::Output, ) -> Option<()>
where D: Driver,

Source§

impl<T> ValueGenerator for RangeTo<T>
where T: BoundedValue,

Source§

type Output = T

Source§

fn generate<D>( &self, driver: &mut D, ) -> Option<<RangeTo<T> as ValueGenerator>::Output>
where D: Driver,

Source§

fn mutate<D>( &self, driver: &mut D, value: &mut <RangeTo<T> as ValueGenerator>::Output, ) -> Option<()>
where D: Driver,

Source§

impl<T> ValueGenerator for RangeToInclusive<T>
where T: BoundedValue,

Source§

type Output = T

Source§

fn generate<D>( &self, driver: &mut D, ) -> Option<<RangeToInclusive<T> as ValueGenerator>::Output>
where D: Driver,

Source§

fn mutate<D>( &self, driver: &mut D, value: &mut <RangeToInclusive<T> as ValueGenerator>::Output, ) -> Option<()>
where D: Driver,

Source§

impl<T, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S> ValueGenerator for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T)

Source§

impl<U, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T> ValueGenerator for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U)

Source§

impl<V, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U> ValueGenerator for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V)

Source§

impl<W, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V> ValueGenerator for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W)

Source§

impl<X, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W> ValueGenerator for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X)

Source§

impl<Y, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X> ValueGenerator for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y)

Source§

impl<Z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y> ValueGenerator for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z)

Implementors§

Source§

impl ValueGenerator for BooleanGenerator

Source§

impl<G, F> ValueGenerator for FilterGenerator<G, F>
where G: ValueGenerator, F: Fn(&<G as ValueGenerator>::Output) -> bool,

Source§

impl<G, F, T> ValueGenerator for FilterMapGenerator<G, F>
where G: ValueGenerator, F: Fn(<G as ValueGenerator>::Output) -> Option<T>, T: 'static,

Source§

impl<G, H, F> ValueGenerator for AndThenGenerator<G, F>
where G: ValueGenerator, H: ValueGenerator, F: Fn(<G as ValueGenerator>::Output) -> H,

Source§

impl<G, M, T> ValueGenerator for MapGenerator<G, M>
where G: ValueGenerator, M: Fn(<G as ValueGenerator>::Output) -> T, T: 'static,

Source§

impl<O> ValueGenerator for OneOf<O>
where O: OneOfGenerator,

Source§

impl<O> ValueGenerator for OneValueOf<O>

Source§

impl<Ok, Err> ValueGenerator for ResultGenerator<Ok, Err>

Source§

impl<Seconds, Nanos> ValueGenerator for DurationGenerator<Seconds, Nanos>
where Seconds: ValueGenerator<Output = u64>, Nanos: ValueGenerator<Output = u32>,

Source§

impl<Start, End, T> ValueGenerator for RangeGenerator<Start, End>
where Start: ValueGenerator<Output = T>, End: ValueGenerator<Output = T>, T: 'static,

Source§

impl<Start, End, T> ValueGenerator for RangeInclusiveGenerator<Start, End>
where Start: ValueGenerator<Output = T>, End: ValueGenerator<Output = T>, T: 'static,

Source§

impl<T> ValueGenerator for Constant<T>
where T: 'static + Clone,

Source§

impl<T> ValueGenerator for TypeValueGenerator<T>
where T: TypeGenerator,

Source§

impl<T, B> ValueGenerator for BoundedGenerator<T, B>
where T: BoundedValue, B: RangeBounds<T>,

Source§

impl<V> ValueGenerator for OptionGenerator<V>
where V: ValueGenerator,