Function std::ptr::swap_nonoverlapping 1.27.0 (const: unstable)[−][src]
pub unsafe fn swap_nonoverlapping<T>(x: *mut T, y: *mut T, count: usize)Expand description
Swaps count * size_of::<T>() bytes between the two regions of memory
beginning at x and y. The two regions must not overlap.
Safety
Behavior is undefined if any of the following conditions are violated:
-
Both
xandymust be valid for both reads and writes ofcount * size_of::<T>()bytes. -
Both
xandymust be properly aligned. -
The region of memory beginning at
xwith a size ofcount * size_of::<T>()bytes must not overlap with the region of memory beginning atywith the same size.
Note that even if the effectively copied size (count * size_of::<T>()) is 0,
the pointers must be non-null and properly aligned.
Examples
Basic usage:
use std::ptr;
let mut x = [1, 2, 3, 4];
let mut y = [7, 8, 9];
unsafe {
ptr::swap_nonoverlapping(x.as_mut_ptr(), y.as_mut_ptr(), 2);
}
assert_eq!(x, [7, 8, 3, 4]);
assert_eq!(y, [1, 2, 9]);Run