本文簡要介紹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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。