如果我有两个不同大小的数组:
let mut array1 = [0; 8];
let array2 = [1, 2, 3, 4];
如何将 array2
复制到 array1
的前 4 个字节?我可以获取 array1 的可变 4 字节切片,但我不确定如何或是否可以分配给它。
最佳答案
手动一个就可以了
for (dst, src) in array1.iter_mut().zip(&array2) {
*dst = *src
}
对于一个典型的切片。但是,clone_from_slice
中的特化可能更快:
dst[..4].clone_from_slice(&src)
一个稍微老一点的方法是使用 std::io::Write
,这是为 &mut [u8]
实现的。
use std::io::Write;
let _ = dst.write(&src)
这将写入直到dst
的末尾,并返回在Result
中写入了多少个值。如果您使用 write_all
,如果不能写入所有字节,这将返回一个 Err
。
关于arrays - 在 Rust 中如何在不同大小的数组之间进行复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25225346/