diff options
| author | Daniel Micay <danielmicay@gmail.com> | 2013-09-15 00:39:34 -0400 |
|---|---|---|
| committer | Daniel Micay <danielmicay@gmail.com> | 2013-09-15 00:39:34 -0400 |
| commit | 66c2965b046029bec04b3f2c73e6619c15784145 (patch) | |
| tree | e65b17ebc94818075951a290c854d72e27428995 | |
| parent | bf7587f5510d146c1f8bce4cb1ec10379d5b7d78 (diff) | |
| download | rust-66c2965b046029bec04b3f2c73e6619c15784145.tar.gz rust-66c2965b046029bec04b3f2c73e6619c15784145.zip | |
iter: fix `RangeInclusive`'s `DoubleEndedIterator`
| -rw-r--r-- | src/libstd/iter.rs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/libstd/iter.rs b/src/libstd/iter.rs index ba109bfa125..0903d6d0b23 100644 --- a/src/libstd/iter.rs +++ b/src/libstd/iter.rs @@ -1829,11 +1829,11 @@ impl<A: Sub<A, A> + Integer + Ord + Clone> DoubleEndedIterator<A> for RangeInclu let result = self.range.stop.clone(); self.range.stop = self.range.stop - self.range.one; Some(result) - } else if self.done { - None - } else { + } else if !self.done && self.range.state == self.range.stop { self.done = true; Some(self.range.stop.clone()) + } else { + None } } } @@ -2713,7 +2713,9 @@ mod tests { assert_eq!(range_inclusive(0i, 5).collect::<~[int]>(), ~[0i, 1, 2, 3, 4, 5]); assert_eq!(range_inclusive(0i, 5).invert().collect::<~[int]>(), ~[5i, 4, 3, 2, 1, 0]); assert_eq!(range_inclusive(200, -5).collect::<~[int]>(), ~[]); + assert_eq!(range_inclusive(200, -5).invert().collect::<~[int]>(), ~[]); assert_eq!(range_inclusive(200, 200).collect::<~[int]>(), ~[200]); + assert_eq!(range_inclusive(200, 200).invert().collect::<~[int]>(), ~[200]); } #[test] |
