Trait optics::traits::Traversal

source ·
pub trait Traversal<T>: Setter<T>
where Self::View: Sized,
{ // Required method fn traverse(&self, s: T, f: &mut dyn FnMut(Self::View)); // Provided methods fn fold<C>(&self, s: T, init: C, f: impl FnMut(&mut C, Self::View)) -> C { ... } fn flatten(&self, s: T) -> Vec<Self::View> { ... } }
Expand description

Traversal (and also Fold).

Required Methods§

source

fn traverse(&self, s: T, f: &mut dyn FnMut(Self::View))

Evaluate the action from left to right on each element targeted by a Traversal.

Provided Methods§

source

fn fold<C>(&self, s: T, init: C, f: impl FnMut(&mut C, Self::View)) -> C

Fold every element targeted by this Traversal into a single result.

source

fn flatten(&self, s: T) -> Vec<Self::View>

Flatten the elements targeted by this Traversal into a Vec.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl<L: Traversal<T>, T> Traversal<T> for &L
where Self::View: Sized,

source§

fn traverse(&self, s: T, f: &mut dyn FnMut(L::View))

source§

fn fold<C>(&self, s: T, init: C, f: impl FnMut(&mut C, Self::View)) -> C

source§

fn flatten(&self, s: T) -> Vec<Self::View>

Implementors§

source§

impl<K, L, T> Traversal<T> for Compose<K, L>
where K: Traversal<T>, K::View: Sized, L: Traversal<K::View>, L::View: Sized,

source§

impl<T0> Traversal<(T0,)> for _0

source§

impl<T0, T1> Traversal<(T0, T1)> for _0

source§

impl<T0, T1> Traversal<(T0, T1)> for _1

source§

impl<T0, T1, T2> Traversal<(T0, T1, T2)> for _0

source§

impl<T0, T1, T2> Traversal<(T0, T1, T2)> for _1

source§

impl<T0, T1, T2> Traversal<(T0, T1, T2)> for _2

source§

impl<T0, T1, T2, T3> Traversal<(T0, T1, T2, T3)> for _0

source§

impl<T0, T1, T2, T3> Traversal<(T0, T1, T2, T3)> for _1

source§

impl<T0, T1, T2, T3> Traversal<(T0, T1, T2, T3)> for _2

source§

impl<T0, T1, T2, T3> Traversal<(T0, T1, T2, T3)> for _3

source§

impl<T> Traversal<Option<T>> for _Some

source§

impl<T> Traversal<T> for Identity

source§

impl<T> Traversal<T> for _Identity<T>

source§

impl<T, E> Traversal<Result<T, E>> for _Err

source§

impl<T, E> Traversal<Result<T, E>> for _Ok

source§

impl<T, L: Traversal<T>, F, G> Traversal<T> for MapFallible<L, F, G>
where L::View: Sized,