Function core::ptr::swap1.0.0[][src]

pub unsafe fn swap<T>(x: *mut T, y: *mut T)

Swaps the values at two mutable locations of the same type, without deinitializing either.

But for the following two exceptions, this function is semantically equivalent to mem::swap:

Safety

Behavior is undefined if any of the following conditions are violated:

Examples

Swapping two non-overlapping regions:

use std::ptr;

let mut array = [0, 1, 2, 3];

let x = array[0..].as_mut_ptr() as *mut [u32; 2];
let y = array[2..].as_mut_ptr() as *mut [u32; 2];

unsafe {
    ptr::swap(x, y);
    assert_eq!([2, 3, 0, 1], array);
}Run

Swapping two overlapping regions:

use std::ptr;

let mut array = [0, 1, 2, 3];

let x = array[0..].as_mut_ptr() as *mut [u32; 3];
let y = array[1..].as_mut_ptr() as *mut [u32; 3];

unsafe {
    ptr::swap(x, y);
    assert_eq!([1, 0, 1, 2], array);
}Run