Как я могу разделить вектор на вектор срезов на основе разделителя? - PullRequest
6 голосов
/ 17 февраля 2020

Если у меня есть вектор, например

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

, я хочу разделить вектор с помощью разделителя 0x40. Есть ли чистый способ сделать эту функцию?

ожидаемый результат: [[0x01, 0x02, 0x03], [0x04, 0x05], [0x06]]

1 Ответ

6 голосов
/ 17 февраля 2020

Использование 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)
}

См. Также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...