pub trait Tuple {
type First;
type Second;
fn first(self) -> Self::First;
fn second(self) -> Self::Second;
}
impl<A, B> Tuple for (A, B) {
type First = A;
type Second = B;
fn first(self) -> Self::First {
self.0
}
fn second(self) -> Self::Second {
self.1
}
}