use clone::Clone;
use cmp::{Ord, PartialOrd, PartialEq, Ordering};
use default::Default;
-use marker;
use num::{Zero, One};
use ops::{Add, FnMut, Mul};
use option::Option::{self, Some, None};
FromB: Default + Extend<B>,
Self: Sized + Iterator<Item=(A, B)>,
{
- struct SizeHint<A>(usize, Option<usize>, marker::PhantomData<A>);
- impl<A> Iterator for SizeHint<A> {
- type Item = A;
-
- fn next(&mut self) -> Option<A> { None }
- fn size_hint(&self) -> (usize, Option<usize>) {
- (self.0, self.1)
- }
- }
-
- let (lo, hi) = self.size_hint();
let mut ts: FromA = Default::default();
let mut us: FromB = Default::default();
- ts.extend(SizeHint(lo, hi, marker::PhantomData));
- us.extend(SizeHint(lo, hi, marker::PhantomData));
-
for (t, u) in self {
ts.extend(Some(t));
us.extend(Some(u));