我有一个 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/