replace in core::ptr - Rust (original) (raw)
Function replace
1.6.0 (const: 1.83.0) · Source
pub const unsafe fn replace<T>(dst: *mut T, src: T) -> TExpand description
Moves src into the pointed dst, returning the previous dst value.
Neither value is dropped.
This function is semantically equivalent to mem::replace except that it operates on raw pointers instead of references. When references are available, mem::replace should be preferred.
§Safety
Behavior is undefined if any of the following conditions are violated:
dstmust be valid for both reads and writes.dstmust be properly aligned.dstmust point to a properly initialized value of typeT.
Note that even if T has size 0, the pointer must be properly aligned.
§Examples
use std::ptr;
let mut rust = vec!['b', 'u', 's', 't'];
// `mem::replace` would have the same effect without requiring the unsafe
// block.
let b = unsafe {
ptr::replace(&mut rust[0], 'r')
};
assert_eq!(b, 'b');
assert_eq!(rust, &['r', 'u', 's', 't']);