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.
Behavior is undefined if any of the following conditions are violated:
Both x
and y
must be valid for both reads and writes of count * size_of::<T>()
bytes.
Both x
and y
must be properly aligned.
The region of memory beginning at x
with a size of count * size_of::<T>()
bytes must not overlap with the region of memory beginning at y
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.
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]);
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/ptr/fn.swap_nonoverlapping.html