pub trait Lens: 'static { type Source: Node; type Target; fn view(&self, data: &'a Self::Source) -> Self::Target; }