core/slice: Mark some split_off variants unstably const · rust-lang/rust@e1388bf (original) (raw)

`@@ -4446,8 +4446,10 @@ impl [T] {

`

4446

4446

```` /// ```


`4447`

`4447`

`#[inline]

`

`4448`

`4448`

`#[stable(feature = "slice_take", since = "CURRENT_RUSTC_VERSION")]

`

`4449`

``

`-

pub fn split_off_first<'a>(self: &mut &'a Self) -> Option<&'a T> {

`

`4450`

``

`-

let (first, rem) = self.split_first()?;

`

``

`4449`

`+

#[rustc_const_unstable(feature = "const_split_off_first_last", issue = "138539")]

`

``

`4450`

`+

pub const fn split_off_first<'a>(self: &mut &'a Self) -> Option<&'a T> {

`

``

`4451`

`` +

// FIXME(const-hack): Use `?` when available in const instead of `let-else`.

``

``

`4452`

`+

let Some((first, rem)) = self.split_first() else { return None };

`

`4451`

`4453`

`*self = rem;

`

`4452`

`4454`

`Some(first)

`

`4453`

`4455`

`}

`

`@@ -4469,8 +4471,11 @@ impl<T> [T] {

`

`4469`

`4471`

```` /// ```

4470

4472

`#[inline]

`

4471

4473

`#[stable(feature = "slice_take", since = "CURRENT_RUSTC_VERSION")]

`

4472

``

`-

pub fn split_off_first_mut<'a>(self: &mut &'a mut Self) -> Option<&'a mut T> {

`

4473

``

`-

let (first, rem) = mem::take(self).split_first_mut()?;

`

``

4474

`+

#[rustc_const_unstable(feature = "const_split_off_first_last", issue = "138539")]

`

``

4475

`+

pub const fn split_off_first_mut<'a>(self: &mut &'a mut Self) -> Option<&'a mut T> {

`

``

4476

`` +

// FIXME(const-hack): Use mem::take and ? when available in const.

``

``

4477

`` +

// Original: mem::take(self).split_first_mut()?

``

``

4478

`+

let Some((first, rem)) = mem::replace(self, &mut []).split_first_mut() else { return None };

`

4474

4479

`*self = rem;

`

4475

4480

`Some(first)

`

4476

4481

`}

`

`@@ -4491,8 +4496,10 @@ impl [T] {

`

4491

4496

```` /// ```


`4492`

`4497`

`#[inline]

`

`4493`

`4498`

`#[stable(feature = "slice_take", since = "CURRENT_RUSTC_VERSION")]

`

`4494`

``

`-

pub fn split_off_last<'a>(self: &mut &'a Self) -> Option<&'a T> {

`

`4495`

``

`-

let (last, rem) = self.split_last()?;

`

``

`4499`

`+

#[rustc_const_unstable(feature = "const_split_off_first_last", issue = "138539")]

`

``

`4500`

`+

pub const fn split_off_last<'a>(self: &mut &'a Self) -> Option<&'a T> {

`

``

`4501`

`` +

// FIXME(const-hack): Use `?` when available in const instead of `let-else`.

``

``

`4502`

`+

let Some((last, rem)) = self.split_last() else { return None };

`

`4496`

`4503`

`*self = rem;

`

`4497`

`4504`

`Some(last)

`

`4498`

`4505`

`}

`

`@@ -4514,8 +4521,11 @@ impl<T> [T] {

`

`4514`

`4521`

```` /// ```

4515

4522

`#[inline]

`

4516

4523

`#[stable(feature = "slice_take", since = "CURRENT_RUSTC_VERSION")]

`

4517

``

`-

pub fn split_off_last_mut<'a>(self: &mut &'a mut Self) -> Option<&'a mut T> {

`

4518

``

`-

let (last, rem) = mem::take(self).split_last_mut()?;

`

``

4524

`+

#[rustc_const_unstable(feature = "const_split_off_first_last", issue = "138539")]

`

``

4525

`+

pub const fn split_off_last_mut<'a>(self: &mut &'a mut Self) -> Option<&'a mut T> {

`

``

4526

`` +

// FIXME(const-hack): Use mem::take and ? when available in const.

``

``

4527

`` +

// Original: mem::take(self).split_last_mut()?

``

``

4528

`+

let Some((last, rem)) = mem::replace(self, &mut []).split_last_mut() else { return None };

`

4519

4529

`*self = rem;

`

4520

4530

`Some(last)

`

4521

4531

`}

`