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
x
andy
must be valid for both reads and writes ofcount * size_of::<T>()
bytes. -
Both
x
andy
must be properly aligned. -
The region of memory beginning at
x
with a size ofcount * size_of::<T>()
bytes must not overlap with the region of memory beginning aty
with 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: