Lenses
A Lens<S, A> is a total optic: every S has exactly one focused A.
#![allow(unused)] fn main() { use id_effect_optics::{Lens, field}; #[derive(Clone)] struct Person { name: String } let name = field( |p: &Person| &p.name, |mut p, name| { p.name = name; p }, ); let updated = name.modify(Person { name: "ada".into() }, |n| n.to_uppercase()); }
Compose nested lenses with Lens::compose.
Stub: derive-generated field lenses land in Plan 04 (FP DX).