1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
use core::ops::Add; use crate::{Pick, RePick, Tupl}; pub fn on<const N: usize, U, T: Tupl + Pick<N>>( mut f: impl FnMut(T::At) -> U, ) -> impl FnMut(T) -> U { move |x| f(x.pick()) } pub fn at<const N: usize, U, T: Tupl + RePick<N, U>>( mut f: impl FnMut(T::At) -> U, ) -> impl FnMut(T) -> T::New { move |x| { let (l, a, r) = x.depict(); T::unpick(l, f(a), r) } }