@@ -564,6 +564,99 @@ fn test_array_chunks_zip() {
564564 assert_eq ! ( res, vec![ 14 , 22 ] ) ;
565565}
566566
567+ #[ test]
568+ fn test_array_chunks_mut_infer ( ) {
569+ let v: & mut [ i32 ] = & mut [ 0 , 1 , 2 , 3 , 4 , 5 , 6 ] ;
570+ for a in v. array_chunks_mut ( ) {
571+ let sum = a. iter ( ) . sum :: < i32 > ( ) ;
572+ * a = [ sum; 3 ] ;
573+ }
574+ assert_eq ! ( v, & [ 3 , 3 , 3 , 12 , 12 , 12 , 6 ] ) ;
575+
576+ let v2: & mut [ i32 ] = & mut [ 0 , 1 , 2 , 3 , 4 , 5 , 6 ] ;
577+ v2. array_chunks_mut ( ) . for_each ( |[ a, b] | core:: mem:: swap ( a, b) ) ;
578+ assert_eq ! ( v2, & [ 1 , 0 , 3 , 2 , 5 , 4 , 6 ] ) ;
579+ }
580+
581+ #[ test]
582+ fn test_array_chunks_mut_count ( ) {
583+ let v: & mut [ i32 ] = & mut [ 0 , 1 , 2 , 3 , 4 , 5 ] ;
584+ let c = v. array_chunks_mut :: < 3 > ( ) ;
585+ assert_eq ! ( c. count( ) , 2 ) ;
586+
587+ let v2: & mut [ i32 ] = & mut [ 0 , 1 , 2 , 3 , 4 ] ;
588+ let c2 = v2. array_chunks_mut :: < 2 > ( ) ;
589+ assert_eq ! ( c2. count( ) , 2 ) ;
590+
591+ let v3: & mut [ i32 ] = & mut [ ] ;
592+ let c3 = v3. array_chunks_mut :: < 2 > ( ) ;
593+ assert_eq ! ( c3. count( ) , 0 ) ;
594+ }
595+
596+ #[ test]
597+ fn test_array_chunks_mut_nth ( ) {
598+ let v: & mut [ i32 ] = & mut [ 0 , 1 , 2 , 3 , 4 , 5 ] ;
599+ let mut c = v. array_chunks_mut :: < 2 > ( ) ;
600+ assert_eq ! ( c. nth( 1 ) . unwrap( ) , & [ 2 , 3 ] ) ;
601+ assert_eq ! ( c. next( ) . unwrap( ) , & [ 4 , 5 ] ) ;
602+
603+ let v2: & mut [ i32 ] = & mut [ 0 , 1 , 2 , 3 , 4 , 5 , 6 ] ;
604+ let mut c2 = v2. array_chunks_mut :: < 3 > ( ) ;
605+ assert_eq ! ( c2. nth( 1 ) . unwrap( ) , & [ 3 , 4 , 5 ] ) ;
606+ assert_eq ! ( c2. next( ) , None ) ;
607+ }
608+
609+ #[ test]
610+ fn test_array_chunks_mut_nth_back ( ) {
611+ let v: & mut [ i32 ] = & mut [ 0 , 1 , 2 , 3 , 4 , 5 ] ;
612+ let mut c = v. array_chunks_mut :: < 2 > ( ) ;
613+ assert_eq ! ( c. nth_back( 1 ) . unwrap( ) , & [ 2 , 3 ] ) ;
614+ assert_eq ! ( c. next( ) . unwrap( ) , & [ 0 , 1 ] ) ;
615+ assert_eq ! ( c. next( ) , None ) ;
616+
617+ let v2: & mut [ i32 ] = & mut [ 0 , 1 , 2 , 3 , 4 ] ;
618+ let mut c2 = v2. array_chunks_mut :: < 3 > ( ) ;
619+ assert_eq ! ( c2. nth_back( 0 ) . unwrap( ) , & [ 0 , 1 , 2 ] ) ;
620+ assert_eq ! ( c2. next( ) , None ) ;
621+ assert_eq ! ( c2. next_back( ) , None ) ;
622+
623+ let v3: & mut [ i32 ] = & mut [ 0 , 1 , 2 , 3 , 4 ] ;
624+ let mut c3 = v3. array_chunks_mut :: < 10 > ( ) ;
625+ assert_eq ! ( c3. nth_back( 0 ) , None ) ;
626+ }
627+
628+ #[ test]
629+ fn test_array_chunks_mut_last ( ) {
630+ let v: & mut [ i32 ] = & mut [ 0 , 1 , 2 , 3 , 4 , 5 ] ;
631+ let c = v. array_chunks_mut :: < 2 > ( ) ;
632+ assert_eq ! ( c. last( ) . unwrap( ) , & [ 4 , 5 ] ) ;
633+
634+ let v2: & mut [ i32 ] = & mut [ 0 , 1 , 2 , 3 , 4 ] ;
635+ let c2 = v2. array_chunks_mut :: < 2 > ( ) ;
636+ assert_eq ! ( c2. last( ) . unwrap( ) , & [ 2 , 3 ] ) ;
637+ }
638+
639+ #[ test]
640+ fn test_array_chunks_mut_remainder ( ) {
641+ let v: & mut [ i32 ] = & mut [ 0 , 1 , 2 , 3 , 4 ] ;
642+ let c = v. array_chunks_mut :: < 2 > ( ) ;
643+ assert_eq ! ( c. into_remainder( ) , & [ 4 ] ) ;
644+ }
645+
646+ #[ test]
647+ fn test_array_chunks_mut_zip ( ) {
648+ let v1: & mut [ i32 ] = & mut [ 0 , 1 , 2 , 3 , 4 ] ;
649+ let v2: & [ i32 ] = & [ 6 , 7 , 8 , 9 , 10 ] ;
650+
651+ for ( a, b) in v1. array_chunks_mut :: < 2 > ( ) . zip ( v2. array_chunks :: < 2 > ( ) ) {
652+ let sum = b. iter ( ) . sum :: < i32 > ( ) ;
653+ for v in a {
654+ * v += sum;
655+ }
656+ }
657+ assert_eq ! ( v1, [ 13 , 14 , 19 , 20 , 4 ] ) ;
658+ }
659+
567660#[ test]
568661fn test_rchunks_count ( ) {
569662 let v: & [ i32 ] = & [ 0 , 1 , 2 , 3 , 4 , 5 ] ;
0 commit comments