1
Fork 0

Simplify RangeInclusive::next[_back]

`match`ing on an `Option<Ordering>` seems cause some confusion for LLVM; switching to just using comparison operators removes a few jumps from the simple `for` loops I was trying.
This commit is contained in:
Scott McMurray 2018-02-07 11:11:54 -08:00
parent 4f93357d3b
commit 27d4d51670
2 changed files with 31 additions and 16 deletions

View file

@ -1332,6 +1332,18 @@ fn test_range_inclusive_exhaustion() {
assert_eq!(r.next_back(), Some(10));
assert_eq!(r, 1..=0);
let mut r = 10..=12;
assert_eq!(r.next(), Some(10));
assert_eq!(r.next(), Some(11));
assert_eq!(r.next(), Some(12));
assert_eq!(r, 1..=0);
let mut r = 10..=12;
assert_eq!(r.next_back(), Some(12));
assert_eq!(r.next_back(), Some(11));
assert_eq!(r.next_back(), Some(10));
assert_eq!(r, 1..=0);
let mut r = 10..=12;
assert_eq!(r.nth(2), Some(12));
assert_eq!(r, 1..=0);
@ -1340,6 +1352,13 @@ fn test_range_inclusive_exhaustion() {
assert_eq!(r.nth(5), None);
assert_eq!(r, 1..=0);
let mut r = 100..=10;
assert_eq!(r.next(), None);
assert_eq!(r, 100..=10);
let mut r = 100..=10;
assert_eq!(r.next_back(), None);
assert_eq!(r, 100..=10);
}
#[test]