1
Fork 0

iter: fix RangeInclusive's DoubleEndedIterator

This commit is contained in:
Daniel Micay 2013-09-15 00:39:34 -04:00
parent bf7587f551
commit 66c2965b04

View file

@ -1829,11 +1829,11 @@ impl<A: Sub<A, A> + Integer + Ord + Clone> DoubleEndedIterator<A> for RangeInclu
let result = self.range.stop.clone(); let result = self.range.stop.clone();
self.range.stop = self.range.stop - self.range.one; self.range.stop = self.range.stop - self.range.one;
Some(result) Some(result)
} else if self.done { } else if !self.done && self.range.state == self.range.stop {
None
} else {
self.done = true; self.done = true;
Some(self.range.stop.clone()) 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).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(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).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).collect::<~[int]>(), ~[200]);
assert_eq!(range_inclusive(200, 200).invert().collect::<~[int]>(), ~[200]);
} }
#[test] #[test]