trait ZipImpl<A, B> {
type Item;
// Required methods
fn new(a: A, b: B) -> Self;
fn next(&mut self) -> Option<Self::Item>;
fn size_hint(&self) -> (usize, Option<usize>);
fn nth(&mut self, n: usize) -> Option<Self::Item>;
fn next_back(&mut self) -> Option<Self::Item>
where A: DoubleEndedIterator + ExactSizeIterator,
B: DoubleEndedIterator + ExactSizeIterator;
unsafe fn get_unchecked(&mut self, idx: usize) -> <Self as Iterator>::Item
where Self: Iterator + TrustedRandomAccessNoCoerce;
}