@@ -473,6 +473,97 @@ fn test_chunks_exact_mut_zip() {
473
473
assert_eq ! ( v1, [ 13 , 14 , 19 , 20 , 4 ] ) ;
474
474
}
475
475
476
+ #[ test]
477
+ fn test_array_chunks_infer ( ) {
478
+ let v: & [ i32 ] = & [ 0 , 1 , 2 , 3 , 4 , -4 ] ;
479
+ let c = v. array_chunks ( ) ;
480
+ for & [ a, b, c] in c {
481
+ assert_eq ! ( a + b + c, 3 ) ;
482
+ }
483
+
484
+ let v2: & [ i32 ] = & [ 0 , 1 , 2 , 3 , 4 , 5 , 6 ] ;
485
+ let total = v2. array_chunks ( ) . map ( |& [ a, b] | a * b) . sum :: < i32 > ( ) ;
486
+ assert_eq ! ( total, 2 * 3 + 4 * 5 ) ;
487
+ }
488
+
489
+ #[ test]
490
+ fn test_array_chunks_count ( ) {
491
+ let v: & [ i32 ] = & [ 0 , 1 , 2 , 3 , 4 , 5 ] ;
492
+ let c = v. array_chunks :: < 3 > ( ) ;
493
+ assert_eq ! ( c. count( ) , 2 ) ;
494
+
495
+ let v2: & [ i32 ] = & [ 0 , 1 , 2 , 3 , 4 ] ;
496
+ let c2 = v2. array_chunks :: < 2 > ( ) ;
497
+ assert_eq ! ( c2. count( ) , 2 ) ;
498
+
499
+ let v3: & [ i32 ] = & [ ] ;
500
+ let c3 = v3. array_chunks :: < 2 > ( ) ;
501
+ assert_eq ! ( c3. count( ) , 0 ) ;
502
+ }
503
+
504
+ #[ test]
505
+ fn test_array_chunks_nth ( ) {
506
+ let v: & [ i32 ] = & [ 0 , 1 , 2 , 3 , 4 , 5 ] ;
507
+ let mut c = v. array_chunks :: < 2 > ( ) ;
508
+ assert_eq ! ( c. nth( 1 ) . unwrap( ) , & [ 2 , 3 ] ) ;
509
+ assert_eq ! ( c. next( ) . unwrap( ) , & [ 4 , 5 ] ) ;
510
+
511
+ let v2: & [ i32 ] = & [ 0 , 1 , 2 , 3 , 4 , 5 , 6 ] ;
512
+ let mut c2 = v2. array_chunks :: < 3 > ( ) ;
513
+ assert_eq ! ( c2. nth( 1 ) . unwrap( ) , & [ 3 , 4 , 5 ] ) ;
514
+ assert_eq ! ( c2. next( ) , None ) ;
515
+ }
516
+
517
+ #[ test]
518
+ fn test_array_chunks_nth_back ( ) {
519
+ let v: & [ i32 ] = & [ 0 , 1 , 2 , 3 , 4 , 5 ] ;
520
+ let mut c = v. array_chunks :: < 2 > ( ) ;
521
+ assert_eq ! ( c. nth_back( 1 ) . unwrap( ) , & [ 2 , 3 ] ) ;
522
+ assert_eq ! ( c. next( ) . unwrap( ) , & [ 0 , 1 ] ) ;
523
+ assert_eq ! ( c. next( ) , None ) ;
524
+
525
+ let v2: & [ i32 ] = & [ 0 , 1 , 2 , 3 , 4 ] ;
526
+ let mut c2 = v2. array_chunks :: < 3 > ( ) ;
527
+ assert_eq ! ( c2. nth_back( 0 ) . unwrap( ) , & [ 0 , 1 , 2 ] ) ;
528
+ assert_eq ! ( c2. next( ) , None ) ;
529
+ assert_eq ! ( c2. next_back( ) , None ) ;
530
+
531
+ let v3: & [ i32 ] = & [ 0 , 1 , 2 , 3 , 4 ] ;
532
+ let mut c3 = v3. array_chunks :: < 10 > ( ) ;
533
+ assert_eq ! ( c3. nth_back( 0 ) , None ) ;
534
+ }
535
+
536
+ #[ test]
537
+ fn test_array_chunks_last ( ) {
538
+ let v: & [ i32 ] = & [ 0 , 1 , 2 , 3 , 4 , 5 ] ;
539
+ let c = v. array_chunks :: < 2 > ( ) ;
540
+ assert_eq ! ( c. last( ) . unwrap( ) , & [ 4 , 5 ] ) ;
541
+
542
+ let v2: & [ i32 ] = & [ 0 , 1 , 2 , 3 , 4 ] ;
543
+ let c2 = v2. array_chunks :: < 2 > ( ) ;
544
+ assert_eq ! ( c2. last( ) . unwrap( ) , & [ 2 , 3 ] ) ;
545
+ }
546
+
547
+ #[ test]
548
+ fn test_array_chunks_remainder ( ) {
549
+ let v: & [ i32 ] = & [ 0 , 1 , 2 , 3 , 4 ] ;
550
+ let c = v. array_chunks :: < 2 > ( ) ;
551
+ assert_eq ! ( c. remainder( ) , & [ 4 ] ) ;
552
+ }
553
+
554
+ #[ test]
555
+ fn test_array_chunks_zip ( ) {
556
+ let v1: & [ i32 ] = & [ 0 , 1 , 2 , 3 , 4 ] ;
557
+ let v2: & [ i32 ] = & [ 6 , 7 , 8 , 9 , 10 ] ;
558
+
559
+ let res = v1
560
+ . array_chunks :: < 2 > ( )
561
+ . zip ( v2. array_chunks :: < 2 > ( ) )
562
+ . map ( |( a, b) | a. iter ( ) . sum :: < i32 > ( ) + b. iter ( ) . sum :: < i32 > ( ) )
563
+ . collect :: < Vec < _ > > ( ) ;
564
+ assert_eq ! ( res, vec![ 14 , 22 ] ) ;
565
+ }
566
+
476
567
#[ test]
477
568
fn test_rchunks_count ( ) {
478
569
let v: & [ i32 ] = & [ 0 , 1 , 2 , 3 , 4 , 5 ] ;
0 commit comments