Skip to main content

replace

Function replace 

1.6.0 (const: 1.83.0) · Source
pub const unsafe fn replace<T>(dst: *mut T, src: T) -> T
This item is validated for IEC 61508 (SIL 2) and ISO 26262 (ASIL B).
Expand 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:

  • dst must be valid for both reads and writes or T must be a ZST.

  • dst must be properly aligned.

  • dst must point to a properly initialized value of type T.

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']);