Extend the const_swap feature

This makes the inherent method ptr::swap unstably
const, as well as slice::swap{,_unchecked}.
This commit is contained in:
est31 2021-11-06 05:56:09 +01:00
parent d32993afe8
commit eeaa2f16aa
2 changed files with 6 additions and 3 deletions

View File

@ -1092,8 +1092,9 @@ impl<T: ?Sized> *mut T {
///
/// [`ptr::swap`]: crate::ptr::swap()
#[stable(feature = "pointer_methods", since = "1.26.0")]
#[rustc_const_unstable(feature = "const_swap", issue = "83163")]
#[inline(always)]
pub unsafe fn swap(self, with: *mut T)
pub const unsafe fn swap(self, with: *mut T)
where
T: Sized,
{

View File

@ -558,8 +558,9 @@ impl<T> [T] {
/// assert!(v == ["a", "b", "e", "d", "c"]);
/// ```
#[stable(feature = "rust1", since = "1.0.0")]
#[rustc_const_unstable(feature = "const_swap", issue = "83163")]
#[inline]
pub fn swap(&mut self, a: usize, b: usize) {
pub const fn swap(&mut self, a: usize, b: usize) {
let _ = &self[a];
let _ = &self[b];
@ -595,7 +596,8 @@ impl<T> [T] {
/// [`swap`]: slice::swap
/// [undefined behavior]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
#[unstable(feature = "slice_swap_unchecked", issue = "88539")]
pub unsafe fn swap_unchecked(&mut self, a: usize, b: usize) {
#[rustc_const_unstable(feature = "const_swap", issue = "83163")]
pub const unsafe fn swap_unchecked(&mut self, a: usize, b: usize) {
#[cfg(debug_assertions)]
{
let _ = &self[a];