Reputation: 81
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
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