[][src]Trait proptest::prelude::Arbitrary

pub trait Arbitrary: Sized + Debug {
    type Parameters: Default;
    type Strategy: Strategy<Value = Self>;
    fn arbitrary_with(args: Self::Parameters) -> Self::Strategy;

    fn arbitrary() -> Self::Strategy { ... }
}

Arbitrary determines a canonical Strategy for the implementing type.

It provides the method arbitrary_with which generates a Strategy for producing arbitrary values of the implementing type (Self). In general, these strategies will produce the entire set of values possible for the type, up to some size limitation or constraints set by their parameters. When this is not desired, strategies to produce the desired values can be built by combining Strategys as described in the crate documentation.

This trait analogous to Haskell QuickCheck's implementation of Arbitrary. In this interpretation of Arbitrary, Strategy is the equivalent of the Gen monad. Unlike in QuickCheck, Arbitrary is not a core component; types do not need to implement Arbitrary unless one wants to use any or other free functions in this module.

Arbitrary currently only works for types which represent owned data as opposed to borrowed data. This is a fundamental restriction of proptest which may be lifted in the future as the generic associated types (GAT) feature of Rust is implemented and stabilized.

Associated Types

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

The type of Strategy used to generate values of type Self.

Required Methods

Generates a Strategy for producing arbitrary values of type the implementing type (Self). The strategy is passed the arguments given in args.

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

Provided Methods

Generates a Strategy for producing arbitrary values of type the implementing type (Self).

Calling this for the type X is the equivalent of using X::arbitrary_with(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.

Implementations on Foreign Types

impl Arbitrary for bool
[src]

impl Arbitrary for i8
[src]

impl Arbitrary for i16
[src]

impl Arbitrary for i32
[src]

impl Arbitrary for i64
[src]

impl Arbitrary for i128
[src]

impl Arbitrary for isize
[src]

impl Arbitrary for u8
[src]

impl Arbitrary for u16
[src]

impl Arbitrary for u32
[src]

impl Arbitrary for u64
[src]

impl Arbitrary for u128
[src]

impl Arbitrary for usize
[src]

impl Arbitrary for f32
[src]

impl Arbitrary for f64
[src]

impl Arbitrary for char
[src]

impl<A: Arbitrary> Arbitrary for [A; 1]
[src]

impl<A: Arbitrary> Arbitrary for [A; 2]
[src]

impl<A: Arbitrary> Arbitrary for [A; 3]
[src]

impl<A: Arbitrary> Arbitrary for [A; 4]
[src]

impl<A: Arbitrary> Arbitrary for [A; 5]
[src]

impl<A: Arbitrary> Arbitrary for [A; 6]
[src]

impl<A: Arbitrary> Arbitrary for [A; 7]
[src]

impl<A: Arbitrary> Arbitrary for [A; 8]
[src]

impl<A: Arbitrary> Arbitrary for [A; 9]
[src]

impl<A: Arbitrary> Arbitrary for [A; 10]
[src]

impl<A: Arbitrary> Arbitrary for [A; 11]
[src]

impl<A: Arbitrary> Arbitrary for [A; 12]
[src]

impl<A: Arbitrary> Arbitrary for [A; 13]
[src]

impl<A: Arbitrary> Arbitrary for [A; 14]
[src]

impl<A: Arbitrary> Arbitrary for [A; 15]
[src]

impl<A: Arbitrary> Arbitrary for [A; 16]
[src]

impl<A: Arbitrary> Arbitrary for [A; 17]
[src]

impl<A: Arbitrary> Arbitrary for [A; 18]
[src]

impl<A: Arbitrary> Arbitrary for [A; 19]
[src]

impl<A: Arbitrary> Arbitrary for [A; 20]
[src]

impl<A: Arbitrary> Arbitrary for [A; 21]
[src]

impl<A: Arbitrary> Arbitrary for [A; 22]
[src]

impl<A: Arbitrary> Arbitrary for [A; 23]
[src]

impl<A: Arbitrary> Arbitrary for [A; 24]
[src]

impl<A: Arbitrary> Arbitrary for [A; 25]
[src]

impl<A: Arbitrary> Arbitrary for [A; 26]
[src]

impl<A: Arbitrary> Arbitrary for [A; 27]
[src]

impl<A: Arbitrary> Arbitrary for [A; 28]
[src]

impl<A: Arbitrary> Arbitrary for [A; 29]
[src]

impl<A: Arbitrary> Arbitrary for [A; 30]
[src]

impl<A: Arbitrary> Arbitrary for [A; 31]
[src]

impl<A: Arbitrary> Arbitrary for [A; 32]
[src]

impl Arbitrary for ()
[src]

impl<T0: Arbitrary> Arbitrary for (T0,)
[src]

impl<T0: Arbitrary, T1: Arbitrary> Arbitrary for (T0, T1)
[src]

impl<T0: Arbitrary, T1: Arbitrary, T2: Arbitrary> Arbitrary for (T0, T1, T2)
[src]

impl<T0: Arbitrary, T1: Arbitrary, T2: Arbitrary, T3: Arbitrary> Arbitrary for (T0, T1, T2, T3)
[src]

impl<T0: Arbitrary, T1: Arbitrary, T2: Arbitrary, T3: Arbitrary, T4: Arbitrary> Arbitrary for (T0, T1, T2, T3, T4)
[src]

impl<T0: Arbitrary, T1: Arbitrary, T2: Arbitrary, T3: Arbitrary, T4: Arbitrary, T5: Arbitrary> Arbitrary for (T0, T1, T2, T3, T4, T5)
[src]

impl<T0: Arbitrary, T1: Arbitrary, T2: Arbitrary, T3: Arbitrary, T4: Arbitrary, T5: Arbitrary, T6: Arbitrary> Arbitrary for (T0, T1, T2, T3, T4, T5, T6)
[src]

impl<T0: Arbitrary, T1: Arbitrary, T2: Arbitrary, T3: Arbitrary, T4: Arbitrary, T5: Arbitrary, T6: Arbitrary, T7: Arbitrary> Arbitrary for (T0, T1, T2, T3, T4, T5, T6, T7)
[src]

impl<T0: Arbitrary, T1: Arbitrary, T2: Arbitrary, T3: Arbitrary, T4: Arbitrary, T5: Arbitrary, T6: Arbitrary, T7: Arbitrary, T8: Arbitrary> Arbitrary for (T0, T1, T2, T3, T4, T5, T6, T7, T8)
[src]

impl<T0: Arbitrary, T1: Arbitrary, T2: Arbitrary, T3: Arbitrary, T4: Arbitrary, T5: Arbitrary, T6: Arbitrary, T7: Arbitrary, T8: Arbitrary, T9: Arbitrary> Arbitrary for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)
[src]

impl Arbitrary for EscapeDefault
[src]

impl<A: Arbitrary + Copy> Arbitrary for Cell<A>
[src]

impl<A: Arbitrary> Arbitrary for RefCell<A>
[src]

impl<A: Arbitrary> Arbitrary for UnsafeCell<A>
[src]

impl Arbitrary for BorrowError
[src]

impl Arbitrary for BorrowMutError
[src]

impl<A: Arbitrary> Arbitrary for Reverse<A>
[src]

impl Arbitrary for Ordering
[src]

impl Arbitrary for Error
[src]

impl<A: Arbitrary> Arbitrary for Once<A>
[src]

impl<A: Arbitrary + Clone> Arbitrary for Repeat<A>
[src]

impl<A: Arbitrary + Iterator + Clone> Arbitrary for Cycle<A>
[src]

impl<A: Arbitrary + Iterator> Arbitrary for Enumerate<A>
[src]

impl<A: Arbitrary + Iterator> Arbitrary for Fuse<A>
[src]

impl<A: Arbitrary + Iterator<Item = T>, T: Debug> Arbitrary for Peekable<A>
[src]

impl<A: Arbitrary + DoubleEndedIterator> Arbitrary for Rev<A>
[src]

impl<'a, T: 'a + Clone, A: Arbitrary + Iterator<Item = &'a T>> Arbitrary for Cloned<A>
[src]

impl<A> Arbitrary for Empty<A>
[src]

impl<A: Arbitrary + Iterator, B: Arbitrary + Iterator> Arbitrary for Zip<A, B>
[src]

impl<T, A: Arbitrary + Iterator<Item = T>, B: Arbitrary + Iterator<Item = T>> Arbitrary for Chain<A, B>
[src]

impl<A: Arbitrary + Iterator> Arbitrary for Skip<A>
[src]

impl<A: Arbitrary + Iterator> Arbitrary for Take<A>
[src]

impl<T: ?Sized> Arbitrary for PhantomData<T>
[src]

impl<A: Arbitrary> Arbitrary for Discriminant<A>
[src]

impl Arbitrary for ParseFloatError
[src]

impl Arbitrary for ParseIntError
[src]

impl<A: Arbitrary> Arbitrary for Wrapping<A>
[src]

impl Arbitrary for FpCategory
[src]

impl Arbitrary for Option<ParseError>
[src]

impl<A: Arbitrary> Arbitrary for Option<A>
[src]

impl<A: Arbitrary> Arbitrary for IntoIter<A>
[src]

impl<A: Arbitrary> Arbitrary for Result<A, ParseError>
[src]

impl<A: Arbitrary> Arbitrary for Result<ParseError, A>
[src]

impl<A: Arbitrary, B: Arbitrary> Arbitrary for Result<A, B>
[src]

impl<A: Arbitrary> Arbitrary for IntoIter<A>
[src]

impl<A: Arbitrary + Borrow<B>, B: ToOwned<Owned = A> + Debug> Arbitrary for Cow<'static, B>
[src]

impl<A: Arbitrary> Arbitrary for Box<A>
[src]

impl Arbitrary for EscapeDebug
[src]

impl Arbitrary for EscapeDefault
[src]

impl Arbitrary for EscapeUnicode
[src]

impl Arbitrary for DecodeUtf16<<Vec<u16> as IntoIterator>::IntoIter>
[src]

impl Arbitrary for ParseCharError
[src]

impl Arbitrary for DecodeUtf16Error
[src]

impl<A: Arbitrary> Arbitrary for Vec<A>
[src]

impl<A: Arbitrary> Arbitrary for Box<[A]>
[src]

impl<A: Arbitrary> Arbitrary for Rc<[A]>
[src]

impl<A: Arbitrary> Arbitrary for Arc<[A]>
[src]

impl<A: Arbitrary> Arbitrary for VecDeque<A>
[src]

impl<A: Arbitrary> Arbitrary for LinkedList<A>
[src]

impl<A: Arbitrary + Ord> Arbitrary for BTreeSet<A>
[src]

impl<A: Arbitrary + Ord> Arbitrary for BinaryHeap<A>
[src]

impl<A: Arbitrary + Hash + Eq> Arbitrary for HashSet<A>
[src]

impl<A: Arbitrary> Arbitrary for IntoIter<A>
[src]

impl<A: Arbitrary> Arbitrary for IntoIter<A>
[src]

impl<A: Arbitrary> Arbitrary for IntoIter<A>
[src]

impl<A: Arbitrary + Ord> Arbitrary for IntoIter<A>
[src]

impl<A: Arbitrary + Ord> Arbitrary for IntoIter<A>
[src]

impl<A: Arbitrary + Hash + Eq> Arbitrary for IntoIter<A>
[src]

impl<A: Arbitrary + Hash + Eq, B: Arbitrary> Arbitrary for HashMap<A, B>
[src]

impl<A: Arbitrary + Hash + Eq, B: Arbitrary> Arbitrary for IntoIter<A, B>
[src]

impl<A: Arbitrary + Ord, B: Arbitrary> Arbitrary for BTreeMap<A, B>
[src]

impl<A: Arbitrary + Ord, B: Arbitrary> Arbitrary for IntoIter<A, B>
[src]

impl<A: Arbitrary> Arbitrary for Bound<A>
[src]

impl<H: Default + Hasher> Arbitrary for BuildHasherDefault<H>
[src]

impl Arbitrary for DefaultHasher
[src]

impl Arbitrary for RandomState
[src]

impl Arbitrary for RangeFull
[src]

impl<A: Arbitrary> Arbitrary for RangeFrom<A>
[src]

impl<A: Arbitrary> Arbitrary for RangeTo<A>
[src]

impl<A: Arbitrary> Arbitrary for RangeToInclusive<A>
[src]

impl<A: PartialOrd + Arbitrary> Arbitrary for RangeInclusive<A>
[src]

impl<A: PartialOrd + Arbitrary> Arbitrary for Range<A>
[src]

impl<A: Arbitrary> Arbitrary for Rc<A>
[src]

impl Arbitrary for ParseBoolError
[src]

impl Arbitrary for Utf8Error
[src]

impl<A: Arbitrary> Arbitrary for Arc<A>
[src]

impl Arbitrary for AtomicBool
[src]

impl Arbitrary for AtomicIsize
[src]

impl Arbitrary for AtomicUsize
[src]

impl Arbitrary for Ordering
[src]

impl Arbitrary for Args
[src]

impl Arbitrary for ArgsOs
[src]

impl Arbitrary for Vars
[src]

impl Arbitrary for VarsOs
[src]

impl Arbitrary for JoinPathsError
[src]

impl Arbitrary for VarError
[src]

impl Arbitrary for CString
[src]

impl Arbitrary for OsString
[src]

impl Arbitrary for Box<CStr>
[src]

impl Arbitrary for Box<OsStr>
[src]

impl Arbitrary for FromBytesWithNulError
[src]

impl Arbitrary for IntoStringError
[src]

impl Arbitrary for DirBuilder
[src]

impl<A: Arbitrary + Read> Arbitrary for BufReader<A>
[src]

impl<A: Arbitrary + Write> Arbitrary for BufWriter<A>
[src]

impl<A: Arbitrary + Write> Arbitrary for LineWriter<A>
[src]

impl<A: Read + Arbitrary, B: Read + Arbitrary> Arbitrary for Chain<A, B>
[src]

impl<A: Arbitrary> Arbitrary for Cursor<A>
[src]

impl Arbitrary for Empty
[src]

impl Arbitrary for Sink
[src]

impl Arbitrary for Stderr
[src]

impl Arbitrary for Stdin
[src]

impl Arbitrary for Stdout
[src]

impl<A: Arbitrary + BufRead> Arbitrary for Lines<A>
[src]

impl Arbitrary for Repeat
[src]

impl<A: BufRead + Arbitrary> Arbitrary for Split<A>
[src]

impl<A: Read + Arbitrary> Arbitrary for Take<A>
[src]

impl Arbitrary for ErrorKind
[src]

impl Arbitrary for SeekFrom
[src]

impl Arbitrary for Error
[src]

impl Arbitrary for AddrParseError
[src]

impl Arbitrary for Ipv4Addr
[src]

impl Arbitrary for Ipv6Addr
[src]

impl Arbitrary for SocketAddrV4
[src]

impl Arbitrary for SocketAddrV6
[src]

impl Arbitrary for IpAddr
[src]

impl Arbitrary for Shutdown
[src]

impl Arbitrary for SocketAddr
[src]

impl<A: Arbitrary> Arbitrary for AssertUnwindSafe<A>
[src]

impl Arbitrary for StripPrefixError
[src]

impl Arbitrary for String
[src]

Panics

This implementation panics if the input is not a valid regex proptest can handle.

impl Arbitrary for Box<str>
[src]

impl Arbitrary for Rc<str>
[src]

impl Arbitrary for Arc<str>
[src]

impl Arbitrary for FromUtf16Error
[src]

impl Arbitrary for FromUtf8Error
[src]

impl<A: Arbitrary> Arbitrary for Mutex<A>
[src]

impl<A: Arbitrary> Arbitrary for RwLock<A>
[src]

impl Arbitrary for Barrier
[src]

impl Arbitrary for BarrierWaitResult
[src]

impl Arbitrary for Condvar
[src]

impl Arbitrary for Once
[src]

impl Arbitrary for WaitTimeoutResult
[src]

impl Arbitrary for RecvError
[src]

impl<T: Arbitrary> Arbitrary for SendError<T>
[src]

impl Arbitrary for RecvTimeoutError
[src]

impl Arbitrary for TryRecvError
[src]

impl<P: Clone + Default, T: Arbitrary<Parameters = P>> Arbitrary for TrySendError<T>
[src]

impl<A> Arbitrary for (Sender<A>, Receiver<A>)
[src]

impl<A: Debug> Arbitrary for (Sender<A>, IntoIter<A>)
[src]

impl<A> Arbitrary for (SyncSender<A>, Receiver<A>)
[src]

impl<A: Debug> Arbitrary for (SyncSender<A>, IntoIter<A>)
[src]

impl Arbitrary for Builder
[src]

impl Arbitrary for Duration
[src]

impl Arbitrary for Instant
[src]

impl Arbitrary for SystemTime
[src]

Implementors

impl Arbitrary for SizeRange
[src]

impl Arbitrary for Probability
[src]

impl Arbitrary for Index
[src]

impl Arbitrary for Selector
[src]