type Item = (A::Item, B::Item);
default fn new(a: A, b: B) -> Self {
Zip {
- a: a,
- b: b,
+ a,
+ b,
index: 0, // unused
len: 0, // unused
}
fn new(a: A, b: B) -> Self {
let len = cmp::min(a.len(), b.len());
Zip {
- a: a,
- b: b,
+ a,
+ b,
index: 0,
- len: len,
+ len,
}
}
_ => (lo, None)
}
}
+
+ #[inline]
+ fn fold<Acc, Fold>(self, init: Acc, mut fold: Fold) -> Acc
+ where Fold: FnMut(Acc, Self::Item) -> Acc,
+ {
+ self.frontiter.into_iter()
+ .chain(self.iter.map(self.f).map(U::into_iter))
+ .chain(self.backiter)
+ .fold(init, |acc, iter| iter.fold(acc, &mut fold))
+ }
}
#[stable(feature = "rust1", since = "1.0.0")]