@iihaarr

Возможно ли собрать данные из итератора в уже созданный буфер?

Есть такой код:
let arr: [i32; 10] = [1,2,3,4,5,6,7,8,9, 10];
    let mut arr2: [i32; 10] = [0; 10];
    
    let mut count = 0;
    for el in arr {
        if el % 2 == 0 {
            arr2[count] = el;
            count += 1;
        }
    }

Можно ли его переписать в функциональном стиле без создания дополнительного буфера? Я нашел в трейте Iterator есть collect_into, но он только в nightly
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
bingo347
@bingo347
Crazy on performance...
let arr: [i32; 10] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let mut arr2: [i32; 10] = [0; 10];

arr.iter()
    .zip(arr2.iter_mut())
    .filter(|(el, _)| **el % 2 == 0)
    .for_each(|(el, target)| {
        *target = *el;
    });
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы