[no description]
| -rw-r--r-- | src/fns.rs | 23 |
1 files changed, 23 insertions, 0 deletions
@@ -15,3 +15,26 @@ pub fn at<const N: usize, U, T: Tupl + RePick<N, U>>( T::unpick(l, f(a), r) } } + +pub mod r { + use super::*; + pub fn on<'a, const N: usize, U, T: Tupl<AsRef<'a>: Pick<N>> + 'a>( + mut f: impl FnMut(<T::AsRef<'a> as Pick<N>>::At) -> U, + ) -> impl FnMut(&'a T) -> U { + move |x| f(x.as_ref().pick()) + } + pub fn at< + 'a, + const N: usize, + U, + T: Tupl<AsRef<'a>: RePick<N, U>> + 'a, + >( + mut f: impl FnMut(<T::AsRef<'a> as Pick<N>>::At) -> U, + ) -> impl FnMut(&'a T) -> <T::AsRef<'a> as RePick<N, U>>::New { + move |x| { + let x = x.as_ref(); + let (l, a, r) = x.depict(); + <T::AsRef<'a>>::unpick(l, f(a), r) + } + } +} |