pub struct LazyJust<T, F: Fn() -> T> { /* private fields */ }
Expand description
A Strategy
which always produces a single value value and never
simplifies. If T
is Clone
, you should use Just
instead.
This is a generalization of Just
and works by calling
the provided Fn () -> T
in .current()
every time. This is not a
very interesting strategy, but is required in cases where T
is
not Clone
. It is also used in proptest_derive
where we can’t
assume that your type is Clone
.
It is important that the function used be pure.
Implementations§
Trait Implementations§
source§impl<T: Debug, F: Clone + Fn() -> T> Strategy for LazyJust<T, F>
impl<T: Debug, F: Clone + Fn() -> T> Strategy for LazyJust<T, F>
source§type Value = T
type Value = T
The type of value used by functions under test generated by this Strategy. Read more
source§fn new_tree(&self, _: &mut TestRunner) -> NewTree<Self>
fn new_tree(&self, _: &mut TestRunner) -> NewTree<Self>
Generate a new value tree from the given runner. Read more
source§fn prop_map<O: Debug, F: Fn(Self::Value) -> O>(self, fun: F) -> Map<Self, F>where
Self: Sized,
fn prop_map<O: Debug, F: Fn(Self::Value) -> O>(self, fun: F) -> Map<Self, F>where
Self: Sized,
Returns a strategy which produces values transformed by the function
fun
. Read moresource§fn prop_map_into<O: Debug>(self) -> MapInto<Self, O>
fn prop_map_into<O: Debug>(self) -> MapInto<Self, O>
source§fn prop_perturb<O: Debug, F: Fn(Self::Value, TestRng) -> O>(
self,
fun: F,
) -> Perturb<Self, F>where
Self: Sized,
fn prop_perturb<O: Debug, F: Fn(Self::Value, TestRng) -> O>(
self,
fun: F,
) -> Perturb<Self, F>where
Self: Sized,
Returns a strategy which produces values transformed by the function
fun
, which is additionally given a random number generator. Read moresource§fn prop_flat_map<S: Strategy, F: Fn(Self::Value) -> S>(
self,
fun: F,
) -> Flatten<Map<Self, F>>where
Self: Sized,
fn prop_flat_map<S: Strategy, F: Fn(Self::Value) -> S>(
self,
fun: F,
) -> Flatten<Map<Self, F>>where
Self: Sized,
Maps values produced by this strategy into new strategies and picks
values from those strategies. Read more
source§fn prop_ind_flat_map<S: Strategy, F: Fn(Self::Value) -> S>(
self,
fun: F,
) -> IndFlatten<Map<Self, F>>where
Self: Sized,
fn prop_ind_flat_map<S: Strategy, F: Fn(Self::Value) -> S>(
self,
fun: F,
) -> IndFlatten<Map<Self, F>>where
Self: Sized,
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
source§fn prop_ind_flat_map2<S: Strategy, F: Fn(Self::Value) -> S>(
self,
fun: F,
) -> IndFlattenMap<Self, F>where
Self: Sized,
fn prop_ind_flat_map2<S: Strategy, F: Fn(Self::Value) -> S>(
self,
fun: F,
) -> IndFlattenMap<Self, F>where
Self: Sized,
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 moresource§fn prop_filter<R: Into<Reason>, F: Fn(&Self::Value) -> bool>(
self,
whence: R,
fun: F,
) -> Filter<Self, F>where
Self: Sized,
fn prop_filter<R: Into<Reason>, F: Fn(&Self::Value) -> bool>(
self,
whence: R,
fun: F,
) -> Filter<Self, F>where
Self: Sized,
Returns a strategy which only produces values accepted by
fun
. Read moresource§fn prop_filter_map<F: Fn(Self::Value) -> Option<O>, O: Debug>(
self,
whence: impl Into<Reason>,
fun: F,
) -> FilterMap<Self, F>where
Self: Sized,
fn prop_filter_map<F: Fn(Self::Value) -> Option<O>, O: Debug>(
self,
whence: impl Into<Reason>,
fun: F,
) -> FilterMap<Self, F>where
Self: Sized,
Returns a strategy which only produces transformed values where
fun
returns Some(value)
and rejects those where fun
returns None
. Read moresource§fn prop_union(self, other: Self) -> Union<Self>where
Self: Sized,
fn prop_union(self, other: Self) -> Union<Self>where
Self: Sized,
source§fn prop_recursive<R: Strategy<Value = Self::Value> + 'static, F: Fn(BoxedStrategy<Self::Value>) -> R>(
self,
depth: u32,
desired_size: u32,
expected_branch_size: u32,
recurse: F,
) -> Recursive<Self::Value, F>where
Self: Sized + 'static,
fn prop_recursive<R: Strategy<Value = Self::Value> + 'static, F: Fn(BoxedStrategy<Self::Value>) -> R>(
self,
depth: u32,
desired_size: u32,
expected_branch_size: u32,
recurse: F,
) -> Recursive<Self::Value, F>where
Self: Sized + 'static,
Generate a recursive structure with
self
items as leaves. Read moresource§impl<T: Debug, F: Fn() -> T> ValueTree for LazyJust<T, F>
impl<T: Debug, F: Fn() -> T> ValueTree for LazyJust<T, F>
source§fn simplify(&mut self) -> bool
fn simplify(&mut self) -> bool
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
source§fn complicate(&mut self) -> bool
fn complicate(&mut self) -> bool
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
impl<T, F: Copy + Fn() -> T> Copy for LazyJust<T, F>
Auto Trait Implementations§
impl<T, F> Freeze for LazyJust<T, F>where
F: Freeze,
impl<T, F> RefUnwindSafe for LazyJust<T, F>where
F: RefUnwindSafe,
impl<T, F> Send for LazyJust<T, F>where
F: Send,
impl<T, F> Sync for LazyJust<T, F>where
F: Sync,
impl<T, F> Unpin for LazyJust<T, F>where
F: Unpin,
impl<T, F> UnwindSafe for LazyJust<T, F>where
F: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)