arrays - 在 Rust 中如何在不同大小的数组之间进行复制?

标签 arrays rust

如果我有两个不同大小的数组:

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/

相关文章:

closures - 如何将可变引用捕获到从闭包返回的迭代器中包含的移动闭包

javascript - 从数组中删除项目的 Jquery 代码

arrays - 为了在 PL/SQL 中对这些数据进行排序,使用什么数据结构?

rust - 对发出的 LLVM IR 执行了哪些 LLVM 传递?

ubuntu - GitHub Action 生成的 Cargo 构建工件不在本地执行

rust - 在 macro_rules 中存储状态

c - 指向 C 中结构表的指针

javascript - Postgres - 检查数组是否包含 id

PHP:如何将另一个数组推送到另一个数组,但不为数组创建新值

rust - 为什么我不能在 par_iter 上调用 collect_into?