pub trait Lens<S, A> {
// Required methods
fn view(&self, whole: &S) -> A;
fn set(&self, whole: &mut S, part: A);
// Provided methods
fn over(&self, whole: &mut S, f: impl FnOnce(A) -> A)
where A: Clone { ... }
fn then<B, L2: Lens<A, B>>(self, inner: L2) -> Composed<Self, L2, A>
where Self: Sized,
A: Clone { ... }
}Expand description
A bidirectional lens focusing on part A of a whole S.
§Laws
A well-behaved lens satisfies:
- GetPut:
lens.set(s, lens.view(s))leavessunchanged. - PutGet: After
lens.set(s, a),lens.view(s)returnsa.
Required Methods§
Provided Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".