mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-14 02:49:40 +00:00
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:
parent
d32993afe8
commit
eeaa2f16aa
@ -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,
|
||||
{
|
||||
|
@ -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];
|
||||
|
Loading…
Reference in New Issue
Block a user