Ржавчина: Ve c в Ve c<T> - PullRequest
       0

Ржавчина: Ve c в Ve c<T>

4 голосов
/ 18 апреля 2020
let a = vec![ vec![1, 2], vec![3, 4], vec![5, 6] ];

Как собрать в один Vec все значения, содержащиеся во всех Vec с a?

Ответы [ 2 ]

5 голосов
/ 18 апреля 2020

Вы можете использовать оператор flatten , чтобы удалить вложение векторов.

Следующий пример взят из ссылки.

let data = vec![vec![1, 2, 3, 4], vec![5, 6]];
let flattened = data.into_iter().flatten().collect::<Vec<u8>>();
assert_eq!(flattened, &[1, 2, 3, 4, 5, 6]);
0 голосов
/ 18 апреля 2020

Ответ Стива верен, но вы также должны знать о flat_map - есть большая вероятность, что это то, что вы действительно хотите использовать, что сделает ваш код проще и быстрее. Вам, вероятно, не нужно когда-либо создавать Ve c Vecs - просто итератор итераторов, который вы flat_map и затем собираете.

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