diff options
| author | Kevin Ballard <kevin@sb.org> | 2013-07-02 18:40:46 -0700 |
|---|---|---|
| committer | Kevin Ballard <kevin@sb.org> | 2013-07-05 01:56:48 -0700 |
| commit | dc9b3ff1b30c10aaf60d40fd9845d9bf69ae2c2e (patch) | |
| tree | 2675e04d6302d3bdf135169bbf83e44ee0e48951 /src/libstd/iterator.rs | |
| parent | e89dcb887b99dc8c04d2863e906a4b2705959159 (diff) | |
| download | rust-dc9b3ff1b30c10aaf60d40fd9845d9bf69ae2c2e.tar.gz rust-dc9b3ff1b30c10aaf60d40fd9845d9bf69ae2c2e.zip | |
Change signature of Iterator.size_hint
Remove the Option wrapper around the lower bound. None is semantically the same as Size(0), so there's no point in having a distinction.
Diffstat (limited to 'src/libstd/iterator.rs')
| -rw-r--r-- | src/libstd/iterator.rs | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/src/libstd/iterator.rs b/src/libstd/iterator.rs index 77befbf19aa..46d449e4dfb 100644 --- a/src/libstd/iterator.rs +++ b/src/libstd/iterator.rs @@ -43,7 +43,7 @@ pub trait Iterator<A> { /// Return a lower bound and upper bound on the remaining length of the iterator. /// /// The common use case for the estimate is pre-allocating space to store the results. - fn size_hint(&self) -> (Option<uint>, Option<uint>) { (None, None) } + fn size_hint(&self) -> (uint, Option<uint>) { (0, None) } } /// Iterator adaptors provided for every `Iterator` implementation. The adaptor objects are also @@ -684,16 +684,11 @@ impl<A, T: Iterator<A>, U: Iterator<A>> Iterator<A> for ChainIterator<A, T, U> { } #[inline] - fn size_hint(&self) -> (Option<uint>, Option<uint>) { + fn size_hint(&self) -> (uint, Option<uint>) { let (a_lower, a_upper) = self.a.size_hint(); let (b_lower, b_upper) = self.b.size_hint(); - let lower = match (a_lower, b_lower) { - (Some(x), Some(y)) => Some(x + y), - (Some(x), None) => Some(x), - (None, Some(y)) => Some(y), - (None, None) => None - }; + let lower = a_lower + b_lower; let upper = match (a_upper, b_upper) { (Some(x), Some(y)) => Some(x + y), @@ -737,7 +732,7 @@ impl<'self, A, B, T: Iterator<A>> Iterator<B> for MapIterator<'self, A, B, T> { } #[inline] - fn size_hint(&self) -> (Option<uint>, Option<uint>) { + fn size_hint(&self) -> (uint, Option<uint>) { self.iter.size_hint() } } @@ -762,9 +757,9 @@ impl<'self, A, T: Iterator<A>> Iterator<A> for FilterIterator<'self, A, T> { } #[inline] - fn size_hint(&self) -> (Option<uint>, Option<uint>) { + fn size_hint(&self) -> (uint, Option<uint>) { let (_, upper) = self.iter.size_hint(); - (None, upper) // can't know a lower bound, due to the predicate + (0, upper) // can't know a lower bound, due to the predicate } } @@ -787,9 +782,9 @@ impl<'self, A, B, T: Iterator<A>> Iterator<B> for FilterMapIterator<'self, A, B, } #[inline] - fn size_hint(&self) -> (Option<uint>, Option<uint>) { + fn size_hint(&self) -> (uint, Option<uint>) { let (_, upper) = self.iter.size_hint(); - (None, upper) // can't know a lower bound, due to the predicate + (0, upper) // can't know a lower bound, due to the predicate } } |
