pub trait UnConsOpt<T> { type Head; type Tail; // Required method fn uncons_opt(self) -> (Self::Head, Self::Tail); }