Struct proptest::strategy::Fuse[][src]

#[must_use = "strategies do nothing unless used"]pub struct Fuse<T> { /* fields omitted */ }

Adaptor for Strategy and ValueTree which guards simplify() and complicate() to avoid contract violations.

This can be used as an intermediate when the caller would otherwise need its own separate state tracking, or as a workaround for a broken ValueTree implementation.

This wrapper specifically has the following effects:

There is also limited functionality to alter the internal state to assist in its usage as a state tracker.

Wrapping a Strategy in Fuse simply causes its ValueTree to also be wrapped in Fuse.

While this is similar to std::iter::Fuse, it is not exposed as a method on Strategy since the vast majority of proptest should never need this functionality; it mainly concerns implementors of strategies.

Implementations

impl<T> Fuse<T>[src]

pub fn new(inner: T) -> Self[src]

Wrap the given T in Fuse.

impl<T: ValueTree> Fuse<T>[src]

pub fn may_simplify(&self) -> bool[src]

Return whether a call to simplify() may be productive.

Formally, this is true if one of the following holds:

  • simplify() has never been called.
  • The most recent call to simplify() returned true.
  • complicate() has been called more recently than simplify() and the last call returned true.

pub fn disallow_simplify(&mut self)[src]

Disallow any further calls to simplify() until a call to complicate() returns true.

pub fn may_complicate(&self) -> bool[src]

Return whether a call to complicate() may be productive.

Formally, this is true if one of the following holds:

  • The most recent call to complicate() returned true.
  • simplify() has been called more recently than complicate() and the last call returned true.

pub fn disallow_complicate(&mut self)[src]

Disallow any further calls to complicate() until a call to simplify() returns true.

pub fn freeze(&mut self)[src]

Prevent any further shrinking operations from occurring.

Trait Implementations

impl<T: Clone> Clone for Fuse<T>[src]

impl<T: Copy> Copy for Fuse<T>[src]

impl<T: Debug> Debug for Fuse<T>[src]

impl<T: Strategy> Strategy for Fuse<T>[src]

type Tree = Fuse<T::Tree>

The value tree generated by this Strategy.

type Value = T::Value

The type of value used by functions under test generated by this Strategy. Read more

impl<T: ValueTree> ValueTree for Fuse<T>[src]

type Value = T::Value

The type of the value produced by this ValueTree.

Auto Trait Implementations

impl<T> Send for Fuse<T> where
    T: Send
[src]

impl<T> Sync for Fuse<T> where
    T: Sync
[src]

impl<T> Unpin for Fuse<T> where
    T: Unpin
[src]

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,