Trait Lens
fp_core::lens
pub trait Lens<S, A> { fn get(s: &S) -> Option<&A>; fn set(a: A, s: &S) -> S; fn over(s: &S, f: &dyn Fn(Option<&A>) -> A) -> S { ... } }
fn get(s: &S) -> Option<&A>
fn set(a: A, s: &S) -> S
fn over(s: &S, f: &dyn Fn(Option<&A>) -> A) -> S