Function core::ptr::swap_nonoverlapping 1.27.0[−][src]
pub unsafe fn swap_nonoverlapping<T>(x: *mut T, y: *mut T, count: usize)
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
x
andy
must be valid. -
Both
x
andy
must be properly aligned. -
x.offset(count)
must be valid. In other words, the region of memory which begins atx
and has a length ofcount * size_of::<T>()
bytes must belong to a single, live allocation. -
y.offset(count)
must be valid. In other words, the region of memory which begins aty
and has a length ofcount * size_of::<T>()
bytes must belong to a single, live allocation. -
The two regions of memory must not overlap.
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