итерирование нескольких (3 и более) срезов (векторов, массивов) одновременно без bounds check

Мои неглубокие знания в rust говорят, что Iterator::zip позволяет итерировать два контейнера одновременно. Вопрос: существует ли способ итерировать 3 и более контейнера одновременно без bounds check?

Есть очевидный способ сделать v1.iter().zip(v2).zip(v3), но есть ли более эргономичные варианты?


Ответы (1 шт):

Автор решения: vessd

Не очень понятно чем не устраивает ваш вариант, но у пакета itertools есть макрос izip

// iterate over three sequences side-by-side
let mut results = [0, 0, 0, 0];
let inputs = [3, 7, 9, 6];

for (r, index, input) in izip!(&mut results, 0..10, &inputs) {
    *r = index * 10 + input;
}

assert_eq!(results, [0 + 3, 10 + 7, 29, 36]);
→ Ссылка