rust - 将向量拆分为 block 时处理余数的优雅方法是什么?

标签 rust

我有一个 10 字节的缓冲区:

  • 头部:3字节
  • 有效负载:7 字节

我有一个更大的有效载荷 ( in_data: Vec<u8> ),我需要将其拆分成多个 block :

let mut buffer = vec![0u8; 10];

for chunk in in_data.chunks(7) {
    buffer[3..].copy_from_slice(chunk);
    // Do something with each packet.. send to device, etc.
}

如果所有 block 的大小都是 7,这很好,但是当有余数时,copy_from_slice失败,因为 block 小于缓冲区切片。

我可以添加 ifs、检查等。理想情况下,我想用零填充缓冲区中的任何剩余空间,但这并不重要。

处理此问题的优雅 Rust 方法是什么?

最佳答案

我认为这是最简单、最干净的答案:

let mut buffer = vec![0u8; 10];

for chunk in in_data.chunks(7) {
    buffer[3..3 + chunk.len()].copy_from_slice(chunk);
    // Do something with each packet.. send to device, etc.
}

关于rust - 将向量拆分为 block 时处理余数的优雅方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51720573/

相关文章:

rust - 如何在不进行手动解析的情况下从可能包含剩余字符的字符串中解析 float ?

rust - 如何用 nom 解析一段 u16 输入?

rust - 英文字母作为 Rust 中字符的向量

random - 无法创建向量并将其打乱

linux - 我可以捕捉到内存不足的错误吗?

c - 如何将 C 字符串转换为 Rust 字符串并通过 FFI 转换回来?

string - from_utf8将字符串用引号引起来

rust - 可变与不可变生命周期

rust - 如何解析 actix-web 中的查询字符串?

closures - 如何在 FnMut 上下文中使用盒装闭包?