pub trait SplitOff<R> { type Remaining; fn split_off(input: &Self) -> (&R, &Self::Remaining); fn split_off_mut(input: &mut Self) -> (&mut R, &mut Self::Remaining); }