File tree Expand file tree Collapse file tree 2 files changed +31
-16
lines changed Expand file tree Collapse file tree 2 files changed +31
-16
lines changed Original file line number Diff line number Diff line change @@ -334,19 +334,17 @@ impl<A: Step> Iterator for ops::RangeInclusive<A> {
334334
335335 #[ inline]
336336 fn next ( & mut self ) -> Option < A > {
337- use cmp:: Ordering :: * ;
338-
339- match self . start . partial_cmp ( & self . end ) {
340- Some ( Less ) => {
337+ if self . start <= self . end {
338+ if self . start < self . end {
341339 let n = self . start . add_one ( ) ;
342340 Some ( mem:: replace ( & mut self . start , n) )
343- } ,
344- Some ( Equal ) => {
341+ } else {
345342 let last = self . start . replace_one ( ) ;
346343 self . end . replace_zero ( ) ;
347344 Some ( last)
348- } ,
349- _ => None ,
345+ }
346+ } else {
347+ None
350348 }
351349 }
352350
@@ -428,19 +426,17 @@ impl<A: Step> Iterator for ops::RangeInclusive<A> {
428426impl < A : Step > DoubleEndedIterator for ops:: RangeInclusive < A > {
429427 #[ inline]
430428 fn next_back ( & mut self ) -> Option < A > {
431- use cmp:: Ordering :: * ;
432-
433- match self . start . partial_cmp ( & self . end ) {
434- Some ( Less ) => {
429+ if self . start <= self . end {
430+ if self . start < self . end {
435431 let n = self . end . sub_one ( ) ;
436432 Some ( mem:: replace ( & mut self . end , n) )
437- } ,
438- Some ( Equal ) => {
433+ } else {
439434 let last = self . end . replace_zero ( ) ;
440435 self . start . replace_one ( ) ;
441436 Some ( last)
442- } ,
443- _ => None ,
437+ }
438+ } else {
439+ None
444440 }
445441 }
446442
Original file line number Diff line number Diff line change @@ -1332,6 +1332,18 @@ fn test_range_inclusive_exhaustion() {
13321332 assert_eq ! ( r. next_back( ) , Some ( 10 ) ) ;
13331333 assert_eq ! ( r, 1 ..=0 ) ;
13341334
1335+ let mut r = 10 ..=12 ;
1336+ assert_eq ! ( r. next( ) , Some ( 10 ) ) ;
1337+ assert_eq ! ( r. next( ) , Some ( 11 ) ) ;
1338+ assert_eq ! ( r. next( ) , Some ( 12 ) ) ;
1339+ assert_eq ! ( r, 1 ..=0 ) ;
1340+
1341+ let mut r = 10 ..=12 ;
1342+ assert_eq ! ( r. next_back( ) , Some ( 12 ) ) ;
1343+ assert_eq ! ( r. next_back( ) , Some ( 11 ) ) ;
1344+ assert_eq ! ( r. next_back( ) , Some ( 10 ) ) ;
1345+ assert_eq ! ( r, 1 ..=0 ) ;
1346+
13351347 let mut r = 10 ..=12 ;
13361348 assert_eq ! ( r. nth( 2 ) , Some ( 12 ) ) ;
13371349 assert_eq ! ( r, 1 ..=0 ) ;
@@ -1340,6 +1352,13 @@ fn test_range_inclusive_exhaustion() {
13401352 assert_eq ! ( r. nth( 5 ) , None ) ;
13411353 assert_eq ! ( r, 1 ..=0 ) ;
13421354
1355+ let mut r = 100 ..=10 ;
1356+ assert_eq ! ( r. next( ) , None ) ;
1357+ assert_eq ! ( r, 100 ..=10 ) ;
1358+
1359+ let mut r = 100 ..=10 ;
1360+ assert_eq ! ( r. next_back( ) , None ) ;
1361+ assert_eq ! ( r, 100 ..=10 ) ;
13431362}
13441363
13451364#[ test]
You can’t perform that action at this time.
0 commit comments