Skip to content

Commit 430b3e1

Browse files
committed
remove under/overflow from next_back/next
1 parent a928c83 commit 430b3e1

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

src/libcore/iter.rs

+10-6
Original file line numberDiff line numberDiff line change
@@ -4605,8 +4605,10 @@ impl<A: Step + One> Iterator for ops::RangeInclusive<A> where
46054605
Empty { .. } => (None, None), // empty iterators yield no values
46064606

46074607
NonEmpty { ref mut start, ref mut end } => {
4608-
let one = A::one();
4609-
if start <= end {
4608+
if start == end {
4609+
(Some(mem::replace(end, A::one())), Some(mem::replace(start, A::one())))
4610+
} else if start < end {
4611+
let one = A::one();
46104612
let mut n = &*start + &one;
46114613
mem::swap(&mut n, start);
46124614

@@ -4620,7 +4622,7 @@ impl<A: Step + One> Iterator for ops::RangeInclusive<A> where
46204622
// ^ are we done yet?
46214623
Some(n)) // < the value to output
46224624
} else {
4623-
(Some(mem::replace(start, one)), None)
4625+
(Some(mem::replace(start, A::one())), None)
46244626
}
46254627
}
46264628
};
@@ -4664,15 +4666,17 @@ impl<A: Step + One> DoubleEndedIterator for ops::RangeInclusive<A> where
46644666
Empty { .. } => return None,
46654667

46664668
NonEmpty { ref mut start, ref mut end } => {
4667-
let one = A::one();
4668-
if start <= end {
4669+
if start == end {
4670+
(Some(mem::replace(start, A::one())), Some(mem::replace(end, A::one())))
4671+
} else if start < end {
4672+
let one = A::one();
46694673
let mut n = &*end - &one;
46704674
mem::swap(&mut n, end);
46714675

46724676
(if n == *start { Some(mem::replace(start, one)) } else { None },
46734677
Some(n))
46744678
} else {
4675-
(Some(mem::replace(end, one)), None)
4679+
(Some(mem::replace(end, A::one())), None)
46764680
}
46774681
}
46784682
};

0 commit comments

Comments
 (0)