Trait ArbitraryF2

trait ArbitraryF2<A: fmt::Debug, B: fmt::Debug>: fmt::Debug + Sized

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

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

Associated Types

type Parameters: TraitBound { trait_: Path { path: "Default", id: Id(34), args: None }, generic_params: [], modifier: None }

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 as >::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.

Implementors