@@ -564,6 +564,99 @@ fn test_array_chunks_zip() {
564
564
assert_eq ! ( res, vec![ 14 , 22 ] ) ;
565
565
}
566
566
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
+
567
660
#[ test]
568
661
fn test_rchunks_count ( ) {
569
662
let v: & [ i32 ] = & [ 0 , 1 , 2 , 3 , 4 , 5 ] ;
0 commit comments