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


Rust slice.copy_from_slice用法及代碼示例


本文簡要介紹rust語言中 slice.copy_from_slice 的用法。

用法

pub fn copy_from_slice(&mut self, src: &[T]) where    T: Copy,

使用 memcpy 將 src 中的所有元素複製到 self 中。

src 的長度必須與 self 相同。

如果 T 未實現 Copy ,請使用 clone_from_slice

Panics

如果兩個切片的長度不同,此函數將出現Panics。

例子

將切片中的兩個元素複製到另一個:

let src = [1, 2, 3, 4];
let mut dst = [0, 0];

// Because the slices have to be the same length,
// we slice the source slice from four elements
// to two. It will panic if we don't do this.
dst.copy_from_slice(&src[2..]);

assert_eq!(src, [1, 2, 3, 4]);
assert_eq!(dst, [3, 4]);

Rust 強製在特定範圍內隻能有一個可變引用,而沒有對特定數據的不可變引用。因此,嘗試在單個切片上使用 copy_from_slice 將導致編譯失敗:

let mut slice = [1, 2, 3, 4, 5];

slice[..2].copy_from_slice(&slice[3..]); // compile fail!

為了解決這個問題,我們可以使用 split_at_mut 從切片中創建兩個不同的 sub-slices:

let mut slice = [1, 2, 3, 4, 5];

{
    let (left, right) = slice.split_at_mut(2);
    left.copy_from_slice(&right[1..]);
}

assert_eq!(slice, [4, 5, 3, 4, 5]);

相關用法


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