user12913833
user12913833

Reputation: 81

How can I split a vector into a vector of slices based on a separator?

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]]

Upvotes: 8

Views: 1390

Answers (1)

Shepmaster
Shepmaster

Reputation: 430386

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:

Upvotes: 7

Related Questions