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", so this trait is not object safe.