當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Rust replace用法及代碼示例


本文簡要介紹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-lang.org大神的英文原創作品 Function core::ptr::replace。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。