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


Rust swap_nonoverlapping用法及代碼示例


本文簡要介紹rust語言中 Function core::ptr::swap_nonoverlapping 的用法。

用法

pub unsafe fn swap_nonoverlapping<T>(x: *mut T, y: *mut T, count: usize)

掉期count * size_of::<T>()兩個內存區域之間的字節起始於xy。兩個地區必須不是重疊。

安全性

如果違反以下任何條件,則行為未定義:

  • 對於 count * size_of::<T>() 字節的讀取和寫入,xy 都必須是 valid

  • xy 都必須正確對齊。

  • 內存區域開始於x大小為count * size_of::<T>()字節必須不是與開始於的內存區域重疊y具有相同的尺寸。

請注意,即使有效複製的大小 ( count * size_of::<T>() ) 是 0 ,指針也必須非空且正確對齊。

例子

基本用法:

use std::ptr;

let mut x = [1, 2, 3, 4];
let mut y = [7, 8, 9];

unsafe {
    ptr::swap_nonoverlapping(x.as_mut_ptr(), y.as_mut_ptr(), 2);
}

assert_eq!(x, [7, 8, 3, 4]);
assert_eq!(y, [1, 2, 9]);

相關用法


注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 Function core::ptr::swap_nonoverlapping。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。