Function std::ptr::swap_nonoverlapping
1.27.0 (const: unstable) · source · 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.
The operation is “untyped” in the sense that data may be uninitialized or otherwise violate the
requirements of T. The initialization state is preserved exactly.
§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