Skip to content

Commit da884d2

Browse files
authored
Rollup merge of #101800 - chriss0612:feat/const_split_at_mut, r=fee1-dead
Constify slice.split_at_mut(_unchecked) Tracking Issue: [Tracking Issue for const_slice_split_at_mut](#101804) Feature gate: `#![feature(const_slice_split_at_mut)]` Still requires const_mut_refs to be actually used, but this feature removes the need to manually re implement these functions in a user crate.
2 parents 084029f + 8d6edac commit da884d2

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

library/core/src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@
138138
#![feature(const_size_of_val)]
139139
#![feature(const_slice_from_raw_parts_mut)]
140140
#![feature(const_slice_ptr_len)]
141+
#![feature(const_slice_split_at_mut)]
141142
#![feature(const_str_from_utf8_unchecked_mut)]
142143
#![feature(const_swap)]
143144
#![feature(const_trait_impl)]

library/core/src/slice/mod.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -1580,7 +1580,8 @@ impl<T> [T] {
15801580
#[inline]
15811581
#[track_caller]
15821582
#[must_use]
1583-
pub fn split_at_mut(&mut self, mid: usize) -> (&mut [T], &mut [T]) {
1583+
#[rustc_const_unstable(feature = "const_slice_split_at_mut", issue = "101804")]
1584+
pub const fn split_at_mut(&mut self, mid: usize) -> (&mut [T], &mut [T]) {
15841585
assert!(mid <= self.len());
15851586
// SAFETY: `[ptr; mid]` and `[mid; len]` are inside `self`, which
15861587
// fulfills the requirements of `from_raw_parts_mut`.
@@ -1679,9 +1680,10 @@ impl<T> [T] {
16791680
/// assert_eq!(v, [1, 2, 3, 4, 5, 6]);
16801681
/// ```
16811682
#[unstable(feature = "slice_split_at_unchecked", reason = "new API", issue = "76014")]
1683+
#[rustc_const_unstable(feature = "const_slice_split_at_mut", issue = "101804")]
16821684
#[inline]
16831685
#[must_use]
1684-
pub unsafe fn split_at_mut_unchecked(&mut self, mid: usize) -> (&mut [T], &mut [T]) {
1686+
pub const unsafe fn split_at_mut_unchecked(&mut self, mid: usize) -> (&mut [T], &mut [T]) {
16851687
let len = self.len();
16861688
let ptr = self.as_mut_ptr();
16871689

0 commit comments

Comments
 (0)