将向量拆分为大块时,用什么优雅的方式处理余数?

时间:2018-08-07 06:53:27

标签: rust

我有10个字节的缓冲区:

  • 标题:3个字节
  • 有效载荷:7个字节

我有一个较大的有效载荷(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处理这种问题的优雅方式是什么?

1 个答案:

答案 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.
}