1use crate::errors::*;
2
3pub fn split_into_chunks(data: Vec<u8>, chunk_size: usize) -> Vec<Vec<u8>> {
4 if chunk_size == 0 {
5 return vec![data];
6 }
7 let mut out = Vec::new();
8 let mut i = 0;
9 while i < data.len() {
10 let end = (i + chunk_size).min(data.len());
11 let mut chunk = data[i..end].to_vec();
12 if chunk.len() < chunk_size {
13 chunk.resize(chunk_size, 0); }
15 out.push(chunk);
16 i += chunk_size;
17 }
18 if out.is_empty() && data.is_empty() {
19 out.push(vec![0u8; chunk_size]);
20 }
21 out
22}
23
24pub fn join_chunks(chunks: &[Vec<u8>], original_size: usize) -> Result<Vec<u8>> {
25 let mut buf = Vec::with_capacity(chunks.len() * chunks[0].len());
26 for c in chunks {
27 buf.extend_from_slice(c);
28 }
29 buf.truncate(original_size);
30 Ok(buf)
31}