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 @@ -331,19 +331,17 @@ impl<A: Step> Iterator for ops::RangeInclusive<A> {
331331
332332 #[ inline]
333333 fn next ( & mut self ) -> Option < A > {
334- use cmp:: Ordering :: * ;
335-
336- match self . start . partial_cmp ( & self . end ) {
337- Some ( Less ) => {
334+ if self . start <= self . end {
335+ if self . start < self . end {
338336 let n = self . start . add_one ( ) ;
339337 Some ( mem:: replace ( & mut self . start , n) )
340- } ,
341- Some ( Equal ) => {
338+ } else {
342339 let last = self . start . replace_one ( ) ;
343340 self . end . replace_zero ( ) ;
344341 Some ( last)
345- } ,
346- _ => None ,
342+ }
343+ } else {
344+ None
347345 }
348346 }
349347
@@ -425,19 +423,17 @@ impl<A: Step> Iterator for ops::RangeInclusive<A> {
425423impl < A : Step > DoubleEndedIterator for ops:: RangeInclusive < A > {
426424 #[ inline]
427425 fn next_back ( & mut self ) -> Option < A > {
428- use cmp:: Ordering :: * ;
429-
430- match self . start . partial_cmp ( & self . end ) {
431- Some ( Less ) => {
426+ if self . start <= self . end {
427+ if self . start < self . end {
432428 let n = self . end . sub_one ( ) ;
433429 Some ( mem:: replace ( & mut self . end , n) )
434- } ,
435- Some ( Equal ) => {
430+ } else {
436431 let last = self . end . replace_zero ( ) ;
437432 self . start . replace_one ( ) ;
438433 Some ( last)
439- } ,
440- _ => None ,
434+ }
435+ } else {
436+ None
441437 }
442438 }
443439
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