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.

Methods

impl<T> Fuse<T>
[src]

Wrap the given T in Fuse.

impl<T: ValueTree> Fuse<T>
[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.

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

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.

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

Prevent any further shrinking operations from occurring.

Trait Implementations

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

Formats the value using the given formatter. Read more

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

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

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

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

The value tree generated by this Strategy.

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

Generate a new value tree from the given runner. Read more

Returns a strategy which produces values transformed by the function fun. Read more

Returns a strategy which produces values of type O by transforming Self with Into<O>. Read more

Returns a strategy which produces values transformed by the function fun, which is additionally given a random number generator. Read more

Maps values produced by this strategy into new strategies and picks values from those strategies. Read more

Maps values produced by this strategy into new strategies and picks values from those strategies while considering the new strategies to be independent. Read more

Similar to prop_ind_flat_map(), but produces 2-tuples with the input generated from self in slot 0 and the derived strategy in slot 1. Read more

Returns a strategy which only produces values accepted by fun. Read more

Returns a strategy which only produces transformed values where fun returns Some(value) and rejects those where fun returns None. Read more

Returns a strategy which picks uniformly from self and other. Read more

Generate a recursive structure with self items as leaves. Read more

Shuffle the contents of the values produced by this strategy. Read more

Erases the type of this Strategy so it can be passed around as a simple trait object. Read more

Erases the type of this Strategy so it can be passed around as a simple trait object. Read more

Wraps this strategy to prevent values from being subject to shrinking. Read more

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

The type of the value produced by this ValueTree.

Returns the current value.

Attempts to simplify the current value. Notionally, this sets the "high" value to the current value, and the current value to a "halfway point" between high and low, rounding towards low. Read more

Attempts to partially undo the last simplification. Notionally, this sets the "low" value to one plus the current value, and the current value to a "halfway point" between high and the new low, rounding towards low. Read more

Auto Trait Implementations

impl<T> Send for Fuse<T> where
    T: Send

impl<T> Sync for Fuse<T> where
    T: Sync