@@ -1070,9 +1070,10 @@ impl<T> [T] {
1070
1070
let ( fst, snd) = self . split_at_mut ( len * N ) ;
1071
1071
// SAFETY: We cast a slice of `len * N` elements into
1072
1072
// a slice of `len` many `N` elements chunks.
1073
- let array_slice: & mut [ [ T ; N ] ] =
1074
- unsafe { from_raw_parts_mut ( fst. as_mut_ptr ( ) . cast ( ) , len) } ;
1075
- ArrayChunksMut { iter : array_slice. iter_mut ( ) , rem : snd }
1073
+ unsafe {
1074
+ let array_slice: & mut [ [ T ; N ] ] = from_raw_parts_mut ( fst. as_mut_ptr ( ) . cast ( ) , len) ;
1075
+ ArrayChunksMut { iter : array_slice. iter_mut ( ) , rem : snd }
1076
+ }
1076
1077
}
1077
1078
1078
1079
/// Returns an iterator over `chunk_size` elements of the slice at a time, starting at the end
@@ -6028,6 +6029,12 @@ impl<'a, T, const N: usize> Iterator for ArrayChunksMut<'a, T, N> {
6028
6029
fn last ( self ) -> Option < Self :: Item > {
6029
6030
self . iter . last ( )
6030
6031
}
6032
+
6033
+ unsafe fn get_unchecked ( & mut self , i : usize ) -> & ' a mut [ T ; N ] {
6034
+ // SAFETY: The safety guarantees of `get_unchecked` are transferred to
6035
+ // the caller.
6036
+ unsafe { self . iter . get_unchecked ( i) }
6037
+ }
6031
6038
}
6032
6039
6033
6040
#[ unstable( feature = "array_chunks" , issue = "74985" ) ]
@@ -6059,9 +6066,6 @@ impl<T, const N: usize> FusedIterator for ArrayChunksMut<'_, T, N> {}
6059
6066
#[ doc( hidden) ]
6060
6067
#[ unstable( feature = "array_chunks" , issue = "74985" ) ]
6061
6068
unsafe impl < ' a , T , const N : usize > TrustedRandomAccess for ArrayChunksMut < ' a , T , N > {
6062
- unsafe fn get_unchecked ( & mut self , i : usize ) -> & ' a mut [ T ; N ] {
6063
- unsafe { self . iter . get_unchecked ( i) }
6064
- }
6065
6069
fn may_have_side_effect ( ) -> bool {
6066
6070
false
6067
6071
}
0 commit comments