本文简要介绍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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。