trait Lens {
type Value;
type Target;
// Required methods
fn get<'a>(&self, target: &'a Self::Target) -> &'a Self::Value;
fn set(&self, target: &Self::Target, value: Self::Value) -> Self::Target;
}
trait Lens {
type Value;
type Target;
// Required methods
fn get<'a>(&self, target: &'a Self::Target) -> &'a Self::Value;
fn set(&self, target: &Self::Target, value: Self::Value) -> Self::Target;
}