Функция once
Функция once создаёт итератор,
который возвращает ровно один элемент -
тот, который был передан в качестве аргумента.
После выдачи этого элемента итератор
завершается. Функция принимает значение
любого типа T и возвращает
Once<T>, реализующий трейт
Iterator с типом элемента T.
Функция полезна, когда нужно включить
одиночное значение в цепочку итераторов.
Синтаксис
std::iter::once(value)
Пример
Давайте создадим итератор из одного числа и выведем его элементы:
fn main()
{
let mut iter = std::iter::once(5);
println!("{:?}", iter.next());
println!("{:?}", iter.next());
}
Результат выполнения кода:
Some(5)
None
Пример
Давайте соберём элементы итератора в вектор:
fn main()
{
let res: Vec<i32> = std::iter::once(1).collect();
println!("{:?}", res);
}
Результат выполнения кода:
[1]
Пример
Давайте объединим одиночный элемент
с другим итератором с помощью метода
chain:
fn main()
{
let res: Vec<i32> = std::iter::once(1)
.chain(vec![2, 3, 4, 5])
.collect();
println!("{:?}", res);
}
Результат выполнения кода:
[1, 2, 3, 4, 5]
Пример
Давайте применим once для строки
и преобразуем её через метод map:
fn main()
{
let res: Vec<String> = std::iter::once("abcde")
.map(|s| s.to_uppercase())
.collect();
println!("{:?}", res);
}
Результат выполнения кода:
["ABCDE"]