Метод by_ref
Метод by_ref возвращает изменяемую ссылку на итератор.
Этот метод не принимает параметров и позволяет использовать
адаптеры итератора без перемещения самого итератора.
Он особенно полезен, когда нужно частично потребить
итератор, а затем продолжить работу с ним.
Синтаксис
iter.by_ref()
Пример
Давайте рассмотрим пример, где мы сначала берём первые два элемента итератора, а затем продолжаем итерацию с оставшимися элементами:
fn main()
{
let mut iter = vec![1, 2, 3, 4, 5].into_iter();
let first_two: Vec<_> = iter.by_ref().take(2).collect();
println!("{:?}", first_two);
let remaining: Vec<_> = iter.collect();
println!("{:?}", remaining);
}
Результат выполнения кода:
[1, 2]
[3, 4, 5]
Пример
Давайте рассмотрим пример, где мы используем
метод by_ref для поиска первого чётного числа,
а затем продолжаем работу с итератором:
fn main()
{
let mut iter = vec![1, 3, 5, 6, 7, 8, 9].into_iter();
let first_even = iter.by_ref().find(|&x| x % 2 == 0);
println!("{:?}", first_even);
let remaining: Vec<_> = iter.collect();
println!("{:?}", remaining);
}
Результат выполнения кода:
Some(6)
[7, 8, 9]