本文簡要介紹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 slice.copy_within用法及代碼示例
- Rust slice.contains用法及代碼示例
- Rust slice.connect用法及代碼示例
- Rust slice.concat用法及代碼示例
- Rust slice.chunks_exact_mut用法及代碼示例
- Rust slice.chunks_exact用法及代碼示例
- Rust slice.clone_from_slice用法及代碼示例
- Rust slice.chunks用法及代碼示例
- Rust slice.chunks_mut用法及代碼示例
- Rust slice.sort_unstable_by_key用法及代碼示例
- Rust slice.iter_mut用法及代碼示例
- Rust slice.windows用法及代碼示例
- Rust slice.repeat用法及代碼示例
- Rust slice.group_by_mut用法及代碼示例
- Rust slice.align_to_mut用法及代碼示例
- Rust slice.as_chunks_unchecked用法及代碼示例
- Rust slice.fill用法及代碼示例
- Rust slice.array_windows用法及代碼示例
- Rust slice.sort_unstable_by用法及代碼示例
- Rust slice.sort用法及代碼示例
- Rust slice.rotate_left用法及代碼示例
- Rust slice.as_mut_ptr用法及代碼示例
- Rust slice.swap_unchecked用法及代碼示例
- Rust slice.get_unchecked用法及代碼示例
- Rust slice.split_array_mut用法及代碼示例
注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 slice.copy_from_slice。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。