diff options
| author | blake2-ppc <blake2-ppc> | 2013-07-20 17:10:00 +0200 |
|---|---|---|
| committer | blake2-ppc <blake2-ppc> | 2013-07-30 01:48:17 +0200 |
| commit | 5d4af58c1d2abc0895d170185796e837f37b16cb (patch) | |
| tree | dbf402e4a4504e7a7534f9291dd1c15e8d0974e9 /src/libstd | |
| parent | 4b2931c90fbe152ca1dd3111985057778dad1ba9 (diff) | |
| download | rust-5d4af58c1d2abc0895d170185796e837f37b16cb.tar.gz rust-5d4af58c1d2abc0895d170185796e837f37b16cb.zip | |
iterator: implement size_hint() for FlatMap
Diffstat (limited to 'src/libstd')
| -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, |
