в Rust: подробное руководство
Rust — мощный язык системного программирования, известный своей ориентацией на безопасность и производительность памяти. Он предоставляет богатый набор функций для работы с коллекциями и итераторами. Одной из таких функций является метод for_each, который позволяет выполнять операции над каждым элементом коллекции с помощью лаконичного и эффективного кода. В этой статье мы рассмотрим различные методы использования for_eachв Rust, а также приведем примеры кода, демонстрирующие его универсальность.
- Основное использование:
Методfor_eachдоступен на всех итераторах Rust и может использоваться для применения замыкания к каждому элементу. Вот простой пример:
let numbers = vec![1, 2, 3, 4, 5];
numbers.iter().for_each(|&x| {
println!("Square of {} is {}", x, x * x);
});
- Изменение элементов.
Вы также можете использоватьfor_eachдля изменения элементов коллекции. Вот пример, в котором каждый элемент вектора удваивается:
let mut numbers = vec![1, 2, 3, 4, 5];
numbers.iter_mut().for_each(|x| {
*x *= 2;
});
println!("Doubled numbers: {:?}", numbers);
- Сбор результатов.
Иногда вам может потребоваться собрать результаты примененияfor_eachк каждому элементу. Этого можно добиться с помощью изменяемых ссылок или другого изменяемого состояния. Вот пример суммирования всех элементов вектора:
let numbers = vec![1, 2, 3, 4, 5];
let mut sum = 0;
numbers.iter().for_each(|&x| {
sum += x;
});
println!("Sum of numbers: {}", sum);
- Связывание с другими методами итераторов.
Методfor_eachможно легко комбинировать с другими методами итераторов для создания мощных конвейеров обработки данных. Вот пример, который фильтрует нечетные числа и печатает их квадраты:
let numbers = vec![1, 2, 3, 4, 5];
numbers.iter()
.filter(|&x| x % 2 == 1)
.for_each(|&x| {
println!("Square of {} is {}", x, x * x);
});
Метод for_eachв Rust предоставляет удобный способ перебора элементов коллекции и выполнения операций над ними. Он предлагает гибкость для изменения элементов, сбора результатов и объединения с другими методами итераторов. Используя возможности for_each, вы можете писать лаконичный и выразительный код, используя при этом весь потенциал итераторов Rust.
: Подробное руководство по эффективным методам итерации