Trait lens_rs::traits::LensRef[][src]

pub trait LensRef<T>: PrismRef<T> {
    fn view_ref<'a>(&self, source: &'a T) -> &'a Self::To;
}

A trait representing the optics allows you to access the field. A Lens can access the substructure must exist.

Example

let mut x = (1, (2, (3, 4)));
*optics!(_1._1._1).view_mut(&mut x) *= 2;
assert_eq!(optics!(_1._1._1).view(x), 8);

Required methods

fn view_ref<'a>(&self, source: &'a T) -> &'a Self::To[src]

Loading content...

Implementors

impl<'t, T, Ls> LensRef<&'t T> for _ref<Ls> where
    Ls: LensRef<<&'t T as Deref>::Target>, 
[src]

impl<'t, T, Ls> LensRef<&'t mut T> for _mut<Ls> where
    Ls: LensRef<<&'t mut T as Deref>::Target>, 
[src]

impl<Ls, A> LensRef<(A,)> for _0<Ls> where
    Ls: LensRef<A>, 
[src]

impl<Ls, A> LensRef<(A,)> for _both<Ls> where
    Ls: LensRef<A>, 
[src]

impl<Ls, A, B> LensRef<(A, B)> for _0<Ls> where
    Ls: LensRef<A>, 
[src]

impl<Ls, A, B> LensRef<(A, B)> for _1<Ls> where
    Ls: LensRef<B>, 
[src]

impl<Ls, A, B, C> LensRef<(A, B, C)> for _0<Ls> where
    Ls: LensRef<A>, 
[src]

impl<Ls, A, B, C> LensRef<(A, B, C)> for _1<Ls> where
    Ls: LensRef<B>, 
[src]

impl<Ls, A, B, C> LensRef<(A, B, C)> for _2<Ls> where
    Ls: LensRef<C>, 
[src]

impl<Ls, A, B, C, D> LensRef<(A, B, C, D)> for _0<Ls> where
    Ls: LensRef<A>, 
[src]

impl<Ls, A, B, C, D> LensRef<(A, B, C, D)> for _1<Ls> where
    Ls: LensRef<B>, 
[src]

impl<Ls, A, B, C, D> LensRef<(A, B, C, D)> for _2<Ls> where
    Ls: LensRef<C>, 
[src]

impl<Ls, A, B, C, D> LensRef<(A, B, C, D)> for _3<Ls> where
    Ls: LensRef<D>, 
[src]

impl<Ls, A, B, C, D, E> LensRef<(A, B, C, D, E)> for _0<Ls> where
    Ls: LensRef<A>, 
[src]

impl<Ls, A, B, C, D, E> LensRef<(A, B, C, D, E)> for _1<Ls> where
    Ls: LensRef<B>, 
[src]

impl<Ls, A, B, C, D, E> LensRef<(A, B, C, D, E)> for _2<Ls> where
    Ls: LensRef<C>, 
[src]

impl<Ls, A, B, C, D, E> LensRef<(A, B, C, D, E)> for _3<Ls> where
    Ls: LensRef<D>, 
[src]

impl<Ls, A, B, C, D, E> LensRef<(A, B, C, D, E)> for _4<Ls> where
    Ls: LensRef<E>, 
[src]

impl<Ls, A, B, C, D, E, F> LensRef<(A, B, C, D, E, F)> for _0<Ls> where
    Ls: LensRef<A>, 
[src]

impl<Ls, A, B, C, D, E, F> LensRef<(A, B, C, D, E, F)> for _1<Ls> where
    Ls: LensRef<B>, 
[src]

impl<Ls, A, B, C, D, E, F> LensRef<(A, B, C, D, E, F)> for _2<Ls> where
    Ls: LensRef<C>, 
[src]

impl<Ls, A, B, C, D, E, F> LensRef<(A, B, C, D, E, F)> for _3<Ls> where
    Ls: LensRef<D>, 
[src]

impl<Ls, A, B, C, D, E, F> LensRef<(A, B, C, D, E, F)> for _4<Ls> where
    Ls: LensRef<E>, 
[src]

impl<Ls, A, B, C, D, E, F> LensRef<(A, B, C, D, E, F)> for _5<Ls> where
    Ls: LensRef<F>, 
[src]

impl<Ls, A, B, C, D, E, F, G> LensRef<(A, B, C, D, E, F, G)> for _0<Ls> where
    Ls: LensRef<A>, 
[src]

impl<Ls, A, B, C, D, E, F, G> LensRef<(A, B, C, D, E, F, G)> for _1<Ls> where
    Ls: LensRef<B>, 
[src]

impl<Ls, A, B, C, D, E, F, G> LensRef<(A, B, C, D, E, F, G)> for _2<Ls> where
    Ls: LensRef<C>, 
[src]

impl<Ls, A, B, C, D, E, F, G> LensRef<(A, B, C, D, E, F, G)> for _3<Ls> where
    Ls: LensRef<D>, 
[src]

impl<Ls, A, B, C, D, E, F, G> LensRef<(A, B, C, D, E, F, G)> for _4<Ls> where
    Ls: LensRef<E>, 
[src]

impl<Ls, A, B, C, D, E, F, G> LensRef<(A, B, C, D, E, F, G)> for _5<Ls> where
    Ls: LensRef<F>, 
[src]

impl<Ls, A, B, C, D, E, F, G> LensRef<(A, B, C, D, E, F, G)> for _6<Ls> where
    Ls: LensRef<G>, 
[src]

impl<T> LensRef<T> for __[src]

impl<T, Ls> LensRef<Box<T, Global>> for _box<Ls> where
    Ls: LensRef<<Box<T> as Deref>::Target>, 
[src]

impl<T, Ls> LensRef<Rc<T>> for _arc<Ls> where
    Ls: LensRef<<Rc<T> as Deref>::Target>, 
[src]

impl<T, Ls> LensRef<Rc<T>> for _rc<Ls> where
    Ls: LensRef<<Rc<T> as Deref>::Target>, 
[src]

Loading content...