iter: fix RangeInclusive
's DoubleEndedIterator
This commit is contained in:
parent
bf7587f551
commit
66c2965b04
1 changed files with 5 additions and 3 deletions
|
@ -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]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue