fp_core/
lens.rs

1pub trait Lens<S, A> {
2    fn over(s: &S, f: &Fn(Option<&A>) -> A) -> S {
3        let result: A = f(Self::get(s));
4        Self::set(result, &s)
5    }
6    fn get(s: &S) -> Option<&A>;
7    fn set(a: A, s: &S) -> S;
8}