diff options
Diffstat (limited to 'src/libstd/iterator.rs')
| -rw-r--r-- | src/libstd/iterator.rs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/libstd/iterator.rs b/src/libstd/iterator.rs index 33d863f3716..87390781802 100644 --- a/src/libstd/iterator.rs +++ b/src/libstd/iterator.rs @@ -1271,6 +1271,16 @@ impl<'self, A, T: Iterator<A>, B, U: Iterator<B>> Iterator<B> for } } } + + #[inline] + fn size_hint(&self) -> (uint, Option<uint>) { + let (flo, fhi) = self.frontiter.map_default((0, Some(0)), |it| it.size_hint()); + let (blo, bhi) = self.backiter.map_default((0, Some(0)), |it| it.size_hint()); + match (self.iter.size_hint(), fhi, bhi) { + ((0, Some(0)), Some(a), Some(b)) => (flo + blo, Some(a + b)), + _ => (flo + blo, None) + } + } } impl<'self, |
