@@ -1473,6 +1473,66 @@ fn test_iterator_rev_nth() {
1473
1473
assert_eq ! ( v. iter( ) . rev( ) . nth( v. len( ) ) , None ) ;
1474
1474
}
1475
1475
1476
+ #[ test]
1477
+ fn test_iterator_advance_by ( ) {
1478
+ let v: & [ _ ] = & [ 0 , 1 , 2 , 3 , 4 ] ;
1479
+
1480
+ for i in 0 ..v. len ( ) {
1481
+ let mut iter = v. iter ( ) ;
1482
+ assert_eq ! ( iter. advance_by( i) , Ok ( ( ) ) ) ;
1483
+ assert_eq ! ( iter. next( ) . unwrap( ) , & v[ i] ) ;
1484
+ assert_eq ! ( iter. advance_by( 100 ) , Err ( v. len( ) - 1 - i) ) ;
1485
+ }
1486
+
1487
+ assert_eq ! ( v. iter( ) . advance_by( v. len( ) ) , Ok ( ( ) ) ) ;
1488
+ assert_eq ! ( v. iter( ) . advance_by( 100 ) , Err ( v. len( ) ) ) ;
1489
+ }
1490
+
1491
+ #[ test]
1492
+ fn test_iterator_advance_back_by ( ) {
1493
+ let v: & [ _ ] = & [ 0 , 1 , 2 , 3 , 4 ] ;
1494
+
1495
+ for i in 0 ..v. len ( ) {
1496
+ let mut iter = v. iter ( ) ;
1497
+ assert_eq ! ( iter. advance_back_by( i) , Ok ( ( ) ) ) ;
1498
+ assert_eq ! ( iter. next_back( ) . unwrap( ) , & v[ v. len( ) - 1 - i] ) ;
1499
+ assert_eq ! ( iter. advance_back_by( 100 ) , Err ( v. len( ) - 1 - i) ) ;
1500
+ }
1501
+
1502
+ assert_eq ! ( v. iter( ) . advance_back_by( v. len( ) ) , Ok ( ( ) ) ) ;
1503
+ assert_eq ! ( v. iter( ) . advance_back_by( 100 ) , Err ( v. len( ) ) ) ;
1504
+ }
1505
+
1506
+ #[ test]
1507
+ fn test_iterator_rev_advance_by ( ) {
1508
+ let v: & [ _ ] = & [ 0 , 1 , 2 , 3 , 4 ] ;
1509
+
1510
+ for i in 0 ..v. len ( ) {
1511
+ let mut iter = v. iter ( ) . rev ( ) ;
1512
+ assert_eq ! ( iter. advance_by( i) , Ok ( ( ) ) ) ;
1513
+ assert_eq ! ( iter. next( ) . unwrap( ) , & v[ v. len( ) - 1 - i] ) ;
1514
+ assert_eq ! ( iter. advance_by( 100 ) , Err ( v. len( ) - 1 - i) ) ;
1515
+ }
1516
+
1517
+ assert_eq ! ( v. iter( ) . rev( ) . advance_by( v. len( ) ) , Ok ( ( ) ) ) ;
1518
+ assert_eq ! ( v. iter( ) . rev( ) . advance_by( 100 ) , Err ( v. len( ) ) ) ;
1519
+ }
1520
+
1521
+ #[ test]
1522
+ fn test_iterator_rev_advance_back_by ( ) {
1523
+ let v: & [ _ ] = & [ 0 , 1 , 2 , 3 , 4 ] ;
1524
+
1525
+ for i in 0 ..v. len ( ) {
1526
+ let mut iter = v. iter ( ) . rev ( ) ;
1527
+ assert_eq ! ( iter. advance_back_by( i) , Ok ( ( ) ) ) ;
1528
+ assert_eq ! ( iter. next_back( ) . unwrap( ) , & v[ i] ) ;
1529
+ assert_eq ! ( iter. advance_back_by( 100 ) , Err ( v. len( ) - 1 - i) ) ;
1530
+ }
1531
+
1532
+ assert_eq ! ( v. iter( ) . rev( ) . advance_back_by( v. len( ) ) , Ok ( ( ) ) ) ;
1533
+ assert_eq ! ( v. iter( ) . rev( ) . advance_back_by( 100 ) , Err ( v. len( ) ) ) ;
1534
+ }
1535
+
1476
1536
#[ test]
1477
1537
fn test_iterator_last ( ) {
1478
1538
let v: & [ _ ] = & [ 0 , 1 , 2 , 3 , 4 ] ;
0 commit comments