Generator

Trait Generator 

Source
pub trait Generator<T> {
    // Required methods
    fn generate(&self, rng: &mut dyn RngCore, config: &GeneratorConfig) -> T;
    fn shrink(&self, value: &T) -> Box<dyn Iterator<Item = T>>;
}
Expand description

Core generator trait for creating random test data

Required Methods§

Source

fn generate(&self, rng: &mut dyn RngCore, config: &GeneratorConfig) -> T

Generate a random value of type T using the provided RNG and configuration

Source

fn shrink(&self, value: &T) -> Box<dyn Iterator<Item = T>>

Create an iterator of shrunk values from the given value

Implementations on Foreign Types§

Source§

impl<A, B, C, GA, GB, GC> Generator<(A, B, C)> for (GA, GB, GC)
where GA: Generator<A>, GB: Generator<B>, GC: Generator<C>, A: Clone + Debug + PartialEq + 'static, B: Clone + Debug + PartialEq + 'static, C: Clone + Debug + PartialEq + 'static,

Source§

fn generate(&self, rng: &mut dyn RngCore, config: &GeneratorConfig) -> (A, B, C)

Source§

fn shrink(&self, value: &(A, B, C)) -> Box<dyn Iterator<Item = (A, B, C)>>

Source§

impl<A, B, GA, GB> Generator<(A, B)> for (GA, GB)
where GA: Generator<A>, GB: Generator<B>, A: Clone + Debug + PartialEq + 'static, B: Clone + Debug + PartialEq + 'static,

Source§

fn generate(&self, rng: &mut dyn RngCore, config: &GeneratorConfig) -> (A, B)

Source§

fn shrink(&self, value: &(A, B)) -> Box<dyn Iterator<Item = (A, B)>>

Implementors§

Source§

impl Generator<bool> for BoolGenerator

Source§

impl Generator<bool> for BoolStrategy

Source§

impl Generator<char> for CharGenerator

Source§

impl Generator<char> for CharStrategy

Source§

impl Generator<f32> for FloatGenerator<f32>

Source§

impl Generator<f64> for F64Strategy

Source§

impl Generator<f64> for FloatGenerator<f64>

Source§

impl Generator<i8> for IntGenerator<i8>

Source§

impl Generator<i16> for IntGenerator<i16>

Source§

impl Generator<i32> for I32Strategy

Source§

impl Generator<i32> for IntGenerator<i32>

Source§

impl Generator<i64> for IntGenerator<i64>

Source§

impl Generator<i128> for IntGenerator<i128>

Source§

impl Generator<isize> for IntGenerator<isize>

Source§

impl Generator<u8> for IntGenerator<u8>

Source§

impl Generator<u16> for IntGenerator<u16>

Source§

impl Generator<u32> for IntGenerator<u32>

Source§

impl Generator<u32> for U32Strategy

Source§

impl Generator<u64> for IntGenerator<u64>

Source§

impl Generator<u128> for IntGenerator<u128>

Source§

impl Generator<()> for UnitGenerator

Source§

impl Generator<usize> for IntGenerator<usize>

Source§

impl Generator<String> for StringGenerator

Source§

impl Generator<String> for StringStrategy

Source§

impl<A: Arbitrary + Clone + 'static, B: Arbitrary + Clone + 'static> Generator<(A, B)> for TupleStrategy2<A, B>

Source§

impl<A: Arbitrary + Clone + 'static, B: Arbitrary + Clone + 'static, C: Arbitrary + Clone + 'static> Generator<(A, B, C)> for TupleStrategy3<A, B, C>

Source§

impl<K, V, KG, VG> Generator<BTreeMap<K, V>> for BTreeMapGenerator<K, V, KG, VG>
where K: Ord + Clone + 'static, V: Clone + 'static, KG: Generator<K> + Clone + 'static, VG: Generator<V> + Clone + 'static,

Source§

impl<K, V, KG, VG> Generator<HashMap<K, V>> for HashMapGenerator<K, V, KG, VG>
where K: Hash + Eq + Clone + 'static, V: Clone + 'static, KG: Generator<K>, VG: Generator<V>,

Source§

impl<T1, T2, G1, G2> Generator<(T1, T2)> for TupleGenerator<T1, T2, G1, G2>
where T1: Clone + 'static, T2: Clone + 'static, G1: Generator<T1>, G2: Generator<T2>,

Source§

impl<T1, T2, T3, G1, G2, G3> Generator<(T1, T2, T3)> for Tuple3Generator<T1, T2, T3, G1, G2, G3>
where T1: Clone + 'static, T2: Clone + 'static, T3: Clone + 'static, G1: Generator<T1>, G2: Generator<T2>, G3: Generator<T3>,

Source§

impl<T1, T2, T3, T4, G1, G2, G3, G4> Generator<(T1, T2, T3, T4)> for Tuple4Generator<T1, T2, T3, T4, G1, G2, G3, G4>
where T1: Clone + 'static, T2: Clone + 'static, T3: Clone + 'static, T4: Clone + 'static, G1: Generator<T1>, G2: Generator<T2>, G3: Generator<T3>, G4: Generator<T4>,

Source§

impl<T> Generator<T> for Just<T>
where T: Clone + Debug + PartialEq + 'static,

Source§

impl<T> Generator<T> for Range<T>
where T: SampleUniform + PartialOrd + Copy + Clone + Debug + PartialEq + 'static,

Source§

impl<T> Generator<T> for BoxedGenerator<T>

Source§

impl<T, E, TG, EG> Generator<Result<T, E>> for ResultGenerator<T, E, TG, EG>
where T: Clone + 'static, E: Clone + 'static, TG: Generator<T> + Clone + 'static, EG: Generator<E> + Clone + 'static,

Source§

impl<T, F> Generator<T> for LazyGenerator<T, F>
where T: 'static, F: Fn() -> Box<dyn Generator<T> + Send + Sync> + Send + Sync,

Source§

impl<T, G> Generator<Option<T>> for OptionGenerator<T, G>
where T: Clone + 'static, G: Generator<T>,

Source§

impl<T, G> Generator<BTreeSet<T>> for BTreeSetGenerator<T, G>
where T: Ord + Clone + 'static, G: Generator<T> + Clone + 'static,

Source§

impl<T, G> Generator<Vec<T>> for VecGenerator<T, G>
where G: Generator<T>, T: Clone + 'static,

Source§

impl<T, G> Generator<HashSet<T>> for HashSetGenerator<T, G>
where T: Hash + Eq + Clone + 'static, G: Generator<T> + Clone + 'static,

Source§

impl<T, G, const N: usize> Generator<[T; N]> for ArrayGenerator<T, G, N>
where T: Clone + Default + 'static, G: Generator<T> + Clone + 'static,

Source§

impl<T: Arbitrary + Clone + 'static> Generator<Vec<T>> for VecStrategy<T>

Source§

impl<T: AutoGen> Generator<T> for InferredGenerator<T>

Source§

impl<T: Clone + 'static> Generator<T> for ConstantGenerator<T>

Source§

impl<T: Clone + 'static> Generator<T> for OneOfGenerator<T>