@@ -1070,9 +1070,10 @@ impl<T> [T] {
10701070 let ( fst, snd) = self . split_at_mut ( len * N ) ;
10711071 // SAFETY: We cast a slice of `len * N` elements into
10721072 // 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+ }
10761077 }
10771078
10781079 /// 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> {
60286029 fn last ( self ) -> Option < Self :: Item > {
60296030 self . iter . last ( )
60306031 }
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+ }
60316038}
60326039
60336040#[ unstable( feature = "array_chunks" , issue = "74985" ) ]
@@ -6059,9 +6066,6 @@ impl<T, const N: usize> FusedIterator for ArrayChunksMut<'_, T, N> {}
60596066#[ doc( hidden) ]
60606067#[ unstable( feature = "array_chunks" , issue = "74985" ) ]
60616068unsafe 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- }
60656069 fn may_have_side_effect ( ) -> bool {
60666070 false
60676071 }
0 commit comments