Function std::ptr::replace

1.0.0 (const: unstable) · source ·
pub unsafe fn replace<T>(dst: *mut T, src: T) -> T
Expand description

src 移至指定的 dst,返回先前的 dst 值。

这两个值都不会被丢弃。

该函数在语义上等效于 mem::replace,除了它在裸指针上而不是在引用上运行。 如果引用可用,则应首选 mem::replace

Safety

如果违反以下任一条件,则行为是未定义的:

  • 对于读取和写入,dst 必须是 有效的

  • dst 必须正确对齐。

  • dst 必须指向 T 类型的正确初始化值。

请注意,即使 T 的大小为 0,指针也必须非空且正确对齐。

Examples

use std::ptr;

let mut rust = vec!['b', 'u', 's', 't'];

// `mem::replace` 将具有相同的效果,而无需 unsafe 块。
let b = unsafe {
    ptr::replace(&mut rust[0], 'r')
};

assert_eq!(b, 'b');
assert_eq!(rust, &['r', 'u', 's', 't']);
Run