本文简要介绍rust语言中 Function core::ptr::replace
的用法。
用法
pub unsafe fn replace<T>(dst: *mut T, src: T) -> T
将 src
移动到指向的 dst
中,返回之前的 dst
值。
两个值都不会被丢弃。
这个函数在语义上等同于 mem::replace
,除了它对原始指针而不是引用进行操作。当参考可用时,应该首选 mem::replace
。
安全性
如果违反以下任何条件,则行为未定义:
-
对于读取和写入,
dst
必须为 valid。 -
dst
必须正确对齐。 -
dst
必须指向T
类型的正确初始化值。
请注意,即使 T
的大小为 0
,指针也必须非空且正确对齐。
例子
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']);
相关用法
- Rust repeat用法及代码示例
- Rust repeat_with用法及代码示例
- Rust rename用法及代码示例
- Rust remove_dir_all用法及代码示例
- Rust read用法及代码示例
- Rust remove_file用法及代码示例
- Rust read_to_string用法及代码示例
- Rust read_link用法及代码示例
- Rust resume_unwind用法及代码示例
- Rust ready用法及代码示例
- Rust read_unaligned用法及代码示例
- Rust remove_dir用法及代码示例
- Rust remove_var用法及代码示例
- Rust read_dir用法及代码示例
- Rust read_volatile用法及代码示例
- Rust range用法及代码示例
- Rust UdpSocket.set_multicast_loop_v6用法及代码示例
- Rust i64.overflowing_add_unsigned用法及代码示例
- Rust Box.downcast用法及代码示例
- Rust BTreeMap.last_key_value用法及代码示例
- Rust str.make_ascii_uppercase用法及代码示例
- Rust u128.checked_pow用法及代码示例
- Rust usize.wrapping_mul用法及代码示例
- Rust AtomicU8.fetch_sub用法及代码示例
- Rust PanicInfo.payload用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Function core::ptr::replace。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。