@@ -473,6 +473,97 @@ fn test_chunks_exact_mut_zip() {
473473 assert_eq ! ( v1, [ 13 , 14 , 19 , 20 , 4 ] ) ;
474474}
475475
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+
476567#[ test]
477568fn test_rchunks_count ( ) {
478569 let v: & [ i32 ] = & [ 0 , 1 , 2 , 3 , 4 , 5 ] ;
0 commit comments