pub trait Variadic<T, A = T, B = A, C = B> { type OneLess: Variadic<A, B, C>; // Required method fn pop(self) -> (Option<T>, Self::OneLess); }