Skip to content

Commit 86b9f71

Browse files
committed
Move ArrayChunksMut::get_unchecked per #73565
1 parent 2190353 commit 86b9f71

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

library/core/src/slice/mod.rs

+10-6
Original file line numberDiff line numberDiff line change
@@ -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")]
60616068
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-
}
60656069
fn may_have_side_effect() -> bool {
60666070
false
60676071
}

0 commit comments

Comments
 (0)