1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
pub fn split_vec(v: &Vec<u8>, sep: &Vec<u8>, res: &mut Vec<Vec<u8>>) { let len_sep = sep.len(); let len_v = v.len(); let mut count: usize = 0; let mut prev_i: usize = 0; for i in 0..len_v { if i == prev_i { continue; } if v[i] == sep[count] { count += 1; if count == len_sep { res.push(Vec::from (&v[prev_i..i-len_sep+1]) ); prev_i = i + 1; count = 0; } } else { count = 0; } } if prev_i != len_v { res.push(Vec::from (&v[prev_i..len_v]) ); } }