proptest-arbitrary 0.2.0

The Arbitrary trait for proptest and implementations for the standard library.
//==============================================================================
// Option:
//==============================================================================

use super::*;
use std::option as opt;
use proptest::option::{self, OptionStrategy};

arbitrary_for!(
    [A: Arbitrary<'a>] Option<A>,
    OptionStrategy<A::Strategy>,
    product_type![Probability, A::Parameters],
    args => {
        let product_unpack![prob, a] = args;
        option::weighted(prob.into(), any_with::<A>(a))
    }
);

arbitrary_for!([A: Arbitrary<'a>] opt::IntoIter<A>,
    SMapped<'a, Option<A>, Self>, <Option<A> as Arbitrary<'a>>::Parameters,
    args => any_with_smap(args, Option::into_iter));

#[cfg(feature = "nightly")]
impl_just!(opt::NoneError, opt::NoneError);