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