zebra_test::prelude::prop::arbitrary::functor

Trait ArbitraryF2

pub trait ArbitraryF2<A, B>: Sized + Debug
where A: Debug, B: Debug,
{ type Parameters: Default; // Required method fn lift2_with<AS, BS>( fst: AS, snd: BS, args: Self::Parameters, ) -> BoxedStrategy<Self> where AS: Strategy<Value = A> + 'static, BS: Strategy<Value = B> + 'static; // Provided method fn lift2<AS, BS>(fst: AS, snd: BS) -> BoxedStrategy<Self> where AS: Strategy<Value = A> + 'static, BS: Strategy<Value = B> + 'static { ... } }
Expand description

ArbitraryF2 lets you lift Strategy to binary type constructors such as Result, HashMap.

The trait corresponds to Haskell QuickCheck’s Arbitrary2 type class.

Required Associated Types§

type Parameters: Default

The type of parameters that lift2_with accepts for configuration of the lifted and generated Strategy. Parameters must implement Default.

Required Methods§

fn lift2_with<AS, BS>( fst: AS, snd: BS, args: Self::Parameters, ) -> BoxedStrategy<Self>
where AS: Strategy<Value = A> + 'static, BS: Strategy<Value = B> + 'static,

Lifts two given strategies to a new Strategy for the (presumably) bigger type. This is useful for lifting a Strategy for Type1 and one for Type2 to a container such as HashMap<Type1, Type2>. The composite strategy is passed the arguments given in args.

If you wish to use the default() arguments, use lift2 instead.

Provided Methods§

fn lift2<AS, BS>(fst: AS, snd: BS) -> BoxedStrategy<Self>
where AS: Strategy<Value = A> + 'static, BS: Strategy<Value = B> + 'static,

Lifts two given strategies to a new Strategy for the (presumably) bigger type. This is useful for lifting a Strategy for Type1 and one for Type2 to a container such as HashMap<Type1, Type2>.

Calling this for the type X is the equivalent of using X::lift2_with(base, Default::default()).

This method is defined in the trait for optimization for the default if you want to do that. It is a logic error to not preserve the semantics when overriding.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

§

impl<A, B> ArbitraryF2<A, B> for Result<A, B>
where A: Debug, B: Debug,

§

type Parameters = Probability

§

fn lift2_with<AS, BS>( fst: AS, snd: BS, args: <Result<A, B> as ArbitraryF2<A, B>>::Parameters, ) -> BoxedStrategy<Result<A, B>>
where AS: Strategy<Value = A> + 'static, BS: Strategy<Value = B> + 'static,

§

impl<A, B> ArbitraryF2<A, B> for BTreeMap<A, B>
where A: Debug + Ord, B: Debug,

§

type Parameters = SizeRange

§

fn lift2_with<AS, BS>( fst: AS, snd: BS, args: <BTreeMap<A, B> as ArbitraryF2<A, B>>::Parameters, ) -> BoxedStrategy<BTreeMap<A, B>>
where AS: Strategy<Value = A> + 'static, BS: Strategy<Value = B> + 'static,

§

impl<A, B> ArbitraryF2<A, B> for IntoIter<A, B>
where A: Debug + Ord + 'static, B: Debug + 'static,

§

type Parameters = SizeRange

§

fn lift2_with<AS, BS>( fst: AS, snd: BS, args: <IntoIter<A, B> as ArbitraryF2<A, B>>::Parameters, ) -> BoxedStrategy<IntoIter<A, B>>
where AS: Strategy<Value = A> + 'static, BS: Strategy<Value = B> + 'static,

§

impl<A, B> ArbitraryF2<A, B> for Zip<A, B>
where A: Debug + Iterator, B: Debug + Iterator,

§

type Parameters = ()

§

fn lift2_with<AS, BS>( fst: AS, snd: BS, _args: <Zip<A, B> as ArbitraryF2<A, B>>::Parameters, ) -> BoxedStrategy<Zip<A, B>>
where AS: Strategy<Value = A> + 'static, BS: Strategy<Value = B> + 'static,

§

impl<A, B> ArbitraryF2<A, B> for HashMap<A, B>
where A: Debug + Eq + Hash, B: Debug,

§

type Parameters = SizeRange

§

fn lift2_with<AS, BS>( fst: AS, snd: BS, args: <HashMap<A, B> as ArbitraryF2<A, B>>::Parameters, ) -> BoxedStrategy<HashMap<A, B>>
where AS: Strategy<Value = A> + 'static, BS: Strategy<Value = B> + 'static,

§

impl<A, B> ArbitraryF2<A, B> for IntoIter<A, B>
where A: Debug + Eq + Hash + 'static, B: Debug + 'static,

§

type Parameters = SizeRange

§

fn lift2_with<AS, BS>( fst: AS, snd: BS, args: <IntoIter<A, B> as ArbitraryF2<A, B>>::Parameters, ) -> BoxedStrategy<IntoIter<A, B>>
where AS: Strategy<Value = A> + 'static, BS: Strategy<Value = B> + 'static,

§

impl<T, A, B> ArbitraryF2<A, B> for Chain<A, B>
where A: Debug + Iterator<Item = T>, B: Debug + Iterator<Item = T>,

§

type Parameters = ()

§

fn lift2_with<AS, BS>( fst: AS, snd: BS, _args: <Chain<A, B> as ArbitraryF2<A, B>>::Parameters, ) -> BoxedStrategy<Chain<A, B>>
where AS: Strategy<Value = A> + 'static, BS: Strategy<Value = B> + 'static,

Implementors§