如果我有一个向量,例如
let mut bytes = vec![0x01, 0x02, 0x03, 0x40, 0x04, 0x05, 0x40, 0x06, 0x40];
我想通过
0x40
分隔符将向量分开。有没有一种简洁的方法来实现这个功能?期望输出:
[[0x01, 0x02, 0x03], [0x04, 0x05], [0x06]]
如果我有一个向量,例如
let mut bytes = vec![0x01, 0x02, 0x03, 0x40, 0x04, 0x05, 0x40, 0x06, 0x40];
0x40
分隔符将向量分开。有没有一种简洁的方法来实现这个功能?[[0x01, 0x02, 0x03], [0x04, 0x05], [0x06]]
使用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)
}
参见:
Vec::split
。 - Brian61354270