Функция repeat
Функция repeat создаёт итератор, который бесконечно
повторяет переданное значение. Параметром функция принимает
значение, которое нужно повторять. Итератор, возвращаемый
функцией, бесконечен, поэтому его обычно комбинируют с
такими методами, как take, zip или
collect, чтобы ограничить количество повторений.
Синтаксис
std::iter::repeat(value)
Пример
Давайте создадим итератор, который повторяет число 5,
и ограничим его тремя элементами с помощью метода take:
fn main()
{
let res: Vec<i32> = std::iter::repeat(5).take(3).collect();
println!("{:?}", res);
}
Результат выполнения кода:
[5, 5, 5]
Пример
Давайте создадим итератор, который повторяет строку
"abcde", и ограничим его четырьмя элементами:
fn main()
{
let res: Vec<&str> = std::iter::repeat("abcde").take(4).collect();
println!("{:?}", res);
}
Результат выполнения кода:
["abcde", "abcde", "abcde", "abcde"]
Пример
Давайте объединим итератор repeat с методом
zip, чтобы повторять значение столько раз,
сколько элементов в другом итераторе:
fn main()
{
let res: Vec<(&str, i32)> = std::iter::repeat("abcde")
.zip(vec![1, 2, 3])
.collect();
println!("{:?}", res);
}
Результат выполнения кода:
[("abcde", 1), ("abcde", 2), ("abcde", 3)]
Пример
Давайте используем repeat вместе с for_each
для повторения значения с ограничением через take:
fn main()
{
std::iter::repeat(7)
.take(5)
.for_each(|x| print!("{} ", x));
println!();
}
Результат выполнения кода:
7 7 7 7 7