pub trait Project<P> { // Required methods fn project(&self) -> Option<&P>; fn project_mut(&mut self) -> Option<&mut P>; }