use super::*;
macro_rules! m_tuple {
($($Tuple:ident $Arr:ident { $($T:ident . $t:ident . $idx:tt),* } )*) => ($(
impl<$($T),*> Iterator for $Tuple<$($T),*> where $( $T: Iterator ),* {
type Item = $Tuple<$($T::Item),*>;
#[allow(non_snake_case)]
#[inline(always)]
fn next(&mut self) -> Option<Self::Item> {
match ( $(self.$idx.next(), )* ) {
( $( Some($T) ,)* ) => Some($Tuple( $($T),* )),
_ => None
}
}
}
)*)
}
impl_tuple!(m_tuple);