Struct refraction::conv::ConvMut
[−]
[src]
pub struct ConvMut<'a, S: ?Sized + 'a, A: ?Sized + 'a = S, T: ?Sized + 'a = S, B: ?Sized + 'a = T> { /* fields omitted */ }
An isomorphism family that handles lossless conversions by mutable reference.
Methods
impl<'a, S: ?Sized, A: ?Sized, T: ?Sized, B: ?Sized> ConvMut<'a, S, A, T, B> where
S: AsMut<A> + 'a,
A: AsMut<S> + 'a,
T: AsMut<B> + 'a,
B: AsMut<T> + 'a,
[src]
S: AsMut<A> + 'a,
A: AsMut<S> + 'a,
T: AsMut<B> + 'a,
B: AsMut<T> + 'a,
fn mk() -> Self
Trait Implementations
impl<'a, S: ?Sized, A: ?Sized, T: ?Sized, B: ?Sized> Debug for ConvMut<'a, S, A, T, B> where
S: AsMut<A> + 'a,
A: AsMut<S> + 'a,
T: AsMut<B> + 'a,
B: AsMut<T> + 'a,
[src]
S: AsMut<A> + 'a,
A: AsMut<S> + 'a,
T: AsMut<B> + 'a,
B: AsMut<T> + 'a,
impl<'a, S: ?Sized, A: ?Sized, T: ?Sized, B: ?Sized> Clone for ConvMut<'a, S, A, T, B> where
S: AsMut<A> + 'a,
A: AsMut<S> + 'a,
T: AsMut<B> + 'a,
B: AsMut<T> + 'a,
[src]
S: AsMut<A> + 'a,
A: AsMut<S> + 'a,
T: AsMut<B> + 'a,
B: AsMut<T> + 'a,
fn clone(&self) -> Self
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
impl<'a, S: ?Sized, A: ?Sized, T: ?Sized, B: ?Sized> Copy for ConvMut<'a, S, A, T, B> where
S: AsMut<A> + 'a,
A: AsMut<S> + 'a,
T: AsMut<B> + 'a,
B: AsMut<T> + 'a,
[src]
S: AsMut<A> + 'a,
A: AsMut<S> + 'a,
T: AsMut<B> + 'a,
B: AsMut<T> + 'a,
impl<'a, S: ?Sized, A: ?Sized, T: ?Sized, B: ?Sized> Default for ConvMut<'a, S, A, T, B> where
S: AsMut<A> + 'a,
A: AsMut<S> + 'a,
T: AsMut<B> + 'a,
B: AsMut<T> + 'a,
[src]
S: AsMut<A> + 'a,
A: AsMut<S> + 'a,
T: AsMut<B> + 'a,
B: AsMut<T> + 'a,
impl<'a, S: ?Sized, A: ?Sized, T: ?Sized, B: ?Sized> Lenticuloid for ConvMut<'a, S, A, T, B> where
S: AsMut<A> + 'a,
A: AsMut<S> + 'a,
T: AsMut<B> + 'a,
B: AsMut<T> + 'a,
[src]
S: AsMut<A> + 'a,
A: AsMut<S> + 'a,
T: AsMut<B> + 'a,
B: AsMut<T> + 'a,
type InitialSource = &'a mut S
type InitialTarget = &'a mut A
type FinalSource = &'a mut T
type FinalTarget = &'a mut B
type AtInitial = ConvMut<'a, S, A, S, A>
fn at_initial(&self) -> Self::AtInitial
type AtFinal = ConvMut<'a, T, B, T, B>
fn at_final(&self) -> Self::AtFinal
impl<'a, S: ?Sized, A: ?Sized, T: ?Sized, B: ?Sized> PartialLens for ConvMut<'a, S, A, T, B> where
S: AsMut<A> + 'a,
A: AsMut<S> + 'a,
T: AsMut<B> + 'a,
B: AsMut<T> + 'a,
[src]
S: AsMut<A> + 'a,
A: AsMut<S> + 'a,
T: AsMut<B> + 'a,
B: AsMut<T> + 'a,
fn try_get(
&self,
v: Self::InitialSource
) -> Result<Self::InitialTarget, Self::FinalSource>
&self,
v: Self::InitialSource
) -> Result<Self::InitialTarget, Self::FinalSource>
fn try_get_inject(
&self,
v: Self::InitialSource
) -> Result<(Self::InitialTarget, Injector<Self::FinalTarget, Self::FinalSource>), Self::FinalSource>
&self,
v: Self::InitialSource
) -> Result<(Self::InitialTarget, Injector<Self::FinalTarget, Self::FinalSource>), Self::FinalSource>
This signature is somewhat hacky; it awaits resolution of the FnBox
issue for better design. Notably, the injection function returned by this method will (if law-abiding) only return Some
exactly once; every time afterwards, it will return None
. Read more
fn set(
&self,
_v: Self::InitialSource,
x: Self::FinalTarget
) -> Self::FinalSource
&self,
_v: Self::InitialSource,
x: Self::FinalTarget
) -> Self::FinalSource
fn exchange(
&self,
v: Self::InitialSource,
x: Self::FinalTarget
) -> (Option<Self::InitialTarget>, Self::FinalSource)
&self,
v: Self::InitialSource,
x: Self::FinalTarget
) -> (Option<Self::InitialTarget>, Self::FinalSource)
fn modify<F>(&self, v: Self::InitialSource, f: F) -> Self::FinalSource where
F: FnOnce(Self::InitialTarget) -> Self::FinalTarget,
F: FnOnce(Self::InitialTarget) -> Self::FinalTarget,
fn modify_with<F, X>(
&self,
v: Self::InitialSource,
f: F
) -> (Self::FinalSource, Option<X>) where
F: FnOnce(Self::InitialTarget) -> (Self::FinalTarget, X),
&self,
v: Self::InitialSource,
f: F
) -> (Self::FinalSource, Option<X>) where
F: FnOnce(Self::InitialTarget) -> (Self::FinalTarget, X),
impl<'a, S: ?Sized, A: ?Sized, T: ?Sized, B: ?Sized> Lens for ConvMut<'a, S, A, T, B> where
S: AsMut<A> + 'a,
A: AsMut<S> + 'a,
T: AsMut<B> + 'a,
B: AsMut<T> + 'a,
[src]
S: AsMut<A> + 'a,
A: AsMut<S> + 'a,
T: AsMut<B> + 'a,
B: AsMut<T> + 'a,
fn get(&self, v: Self::InitialSource) -> Self::InitialTarget
impl<'a, S: ?Sized, A: ?Sized, T: ?Sized, B: ?Sized> Prism for ConvMut<'a, S, A, T, B> where
S: AsMut<A> + 'a,
A: AsMut<S> + 'a,
T: AsMut<B> + 'a,
B: AsMut<T> + 'a,
[src]
S: AsMut<A> + 'a,
A: AsMut<S> + 'a,
T: AsMut<B> + 'a,
B: AsMut<T> + 'a,
fn inject(&self, v: Self::FinalTarget) -> Self::FinalSource
impl<'a, S: ?Sized, A: ?Sized, T: ?Sized, B: ?Sized> Iso for ConvMut<'a, S, A, T, B> where
S: AsMut<A> + 'a,
A: AsMut<S> + 'a,
T: AsMut<B> + 'a,
B: AsMut<T> + 'a,
[src]
S: AsMut<A> + 'a,
A: AsMut<S> + 'a,
T: AsMut<B> + 'a,
B: AsMut<T> + 'a,