Метод step_by
Метод step_by создаёт новый итератор,
который возвращает каждый n-й элемент исходного
итератора. Параметром метод принимает шаг -
целое положительное число, указывающее, через
сколько элементов нужно брать следующий.
Первый элемент исходного итератора всегда
включается в результат.
Синтаксис
iter.step_by(step)
Пример
Давайте возьмём каждый второй элемент
вектора vec![1, 2, 3, 4, 5, 6]:
fn main()
{
let res: Vec<i32> = vec![1, 2, 3, 4, 5, 6]
.into_iter()
.step_by(2)
.collect();
println!("{:?}", res);
}
Результат выполнения кода:
[1, 3, 5]
Пример
Давайте возьмём каждый третий элемент
вектора vec!["a", "b", "c", "d", "e"]:
fn main()
{
let res: Vec<&str> = vec!["a", "b", "c", "d", "e"]
.into_iter()
.step_by(3)
.collect();
println!("{:?}", res);
}
Результат выполнения кода:
["a", "d"]
Пример
Метод step_by можно комбинировать
с другими адаптерами, например, с map.
Давайте возьмём каждый второй элемент и
умножим его на 10:
fn main()
{
let res: Vec<i32> = vec![1, 2, 3, 4, 5, 6]
.into_iter()
.step_by(2)
.map(|x| x * 10)
.collect();
println!("{:?}", res);
}
Результат выполнения кода:
[10, 30, 50]