Map

Struct Map 

Source
pub struct Map<S, F> { /* private fields */ }
Expand description

A strategy that maps values from one type to another

To enable proper shrinking through map, we need to store the original input alongside the mapped output. This is done using MappedValue.

Trait Implementations§

Source§

impl<S, F, U> Strategy for Map<S, F>
where S: Strategy, F: Fn(S::Value) -> U + Clone + 'static, U: 'static, S::Value: Clone,

Source§

type Value = MappedValue<<S as Strategy>::Value, U>

The type of values this strategy generates
Source§

fn generate<R: Rng>(&self, rng: &mut R, config: &GeneratorConfig) -> Self::Value

Generate a value using this strategy
Source§

fn shrink(&self, value: &Self::Value) -> Box<dyn Iterator<Item = Self::Value>>

Create an iterator of shrunk values from the given value
Source§

fn map<F, U>(self, f: F) -> Map<Self, F>
where Self: Sized, F: Fn(Self::Value) -> U, U: 'static,

Map this strategy to produce values of a different type
Source§

fn filter<F>(self, predicate: F) -> Filter<Self, F>
where Self: Sized, F: Fn(&Self::Value) -> bool,

Filter values produced by this strategy
Source§

fn zip<S>(self, other: S) -> Zip<Self, S>
where Self: Sized, S: Strategy,

Combine this strategy with another to produce tuples
Source§

fn flat_map<F, S>(self, f: F) -> FlatMap<Self, F>
where Self: Sized, F: Fn(Self::Value) -> S, S: Strategy,

Flat map (bind) this strategy with a function that produces another strategy This is the most powerful combinator but also the trickiest for shrinking

Auto Trait Implementations§

§

impl<S, F> Freeze for Map<S, F>
where S: Freeze, F: Freeze,

§

impl<S, F> RefUnwindSafe for Map<S, F>

§

impl<S, F> Send for Map<S, F>
where S: Send, F: Send,

§

impl<S, F> Sync for Map<S, F>
where S: Sync, F: Sync,

§

impl<S, F> Unpin for Map<S, F>
where S: Unpin, F: Unpin,

§

impl<S, F> UnwindSafe for Map<S, F>
where S: UnwindSafe, F: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

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

Source§

fn vzip(self) -> V