7

If I have a vector such as

let mut bytes = vec![0x01, 0x02, 0x03, 0x40, 0x04, 0x05, 0x40, 0x06, 0x40];

I want to separate the vector by the 0x40 separator. Is there a clean way of doing this functionality?

expected output: [[0x01, 0x02, 0x03], [0x04, 0x05], [0x06]]

felipsmartins
  • 13,269
  • 4
  • 48
  • 56

1 Answers1

6

Use slice::split:

fn main() {
    let bytes = [0x01, 0x02, 0x03, 0x40, 0x04, 0x05, 0x40, 0x06, 0x40];
    let pieces: Vec<_> = bytes
        .split(|&e| e == 0x40)
        .filter(|v| !v.is_empty())
        .collect();
    println!("{:?}", pieces)
}

See also:

Shepmaster
  • 388,571
  • 95
  • 1,107
  • 1,366