Use iterator to return padding data.

This commit is contained in:
Peilun Li 2024-09-13 00:35:48 +08:00
parent 1d48cb1ea7
commit 6c10b90d9e

View File

@ -989,16 +989,16 @@ impl LogManager {
} }
// FIXME(zz): Implement padding. // FIXME(zz): Implement padding.
pub fn padding(len: usize) -> Vec<Vec<u8>> { pub fn padding(len: usize) -> Box<dyn Iterator<Item = Vec<u8>>> {
let remainder = len % PAD_MAX_SIZE; let remainder = len % PAD_MAX_SIZE;
let n = len / PAD_MAX_SIZE; let n = len / PAD_MAX_SIZE;
let mut pad_data = vec![Self::padding_raw(PAD_MAX_SIZE); n]; let iter = (0..n).map(|_| Self::padding_raw(PAD_MAX_SIZE));
if remainder == 0 { if remainder == 0 {
pad_data Box::new(iter)
} else { } else {
// insert the remainder to the front, so the rest are processed with alignment. // insert the remainder to the front, so the rest are processed with alignment.
pad_data.insert(0, Self::padding_raw(remainder)); let new_iter = iter.chain(vec![Self::padding_raw(remainder)].into_iter());
pad_data Box::new(new_iter)
} }
} }