我有10个字节的缓冲区:
我有一个较大的有效载荷(in_data: Vec<u8>
),需要将其分成多个块:
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.
}
如果所有块的大小都为7,这很好,但是当有剩余块时,copy_from_slice
会失败,因为块小于缓冲区片。
我可以添加if,check等。理想情况下,我想用零填充缓冲区中的所有剩余空间,但这并不重要。
Rust处理这种问题的优雅方式是什么?
答案 0 :(得分:2)
我认为这是最简单,最干净的答案:
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.
}