Метод next_back
Метод next_back возвращает следующий элемент
итератора, но не с начала, а с конца. Он доступен
только для итераторов, реализующих трейт
DoubleEndedIterator. Метод возвращает
Some(элемент), если элементы ещё остались,
и None, когда итератор исчерпан.
Параметров метод не принимает.
Синтаксис
iterator.next_back()
Пример
Давайте получим последний элемент вектора
vec![1, 2, 3, 4, 5] с помощью метода
next_back:
fn main()
{
let mut iter = vec![1, 2, 3, 4, 5].into_iter();
let res = iter.next_back();
println!("{:?}", res);
}
Результат выполнения кода:
Some(5)
Пример
Давайте последовательно получим элементы с обоих концов итератора и посмотрим, как они сближаются:
fn main()
{
let mut iter = vec![1, 2, 3, 4, 5].into_iter();
println!("{:?}", iter.next());
println!("{:?}", iter.next_back());
println!("{:?}", iter.next());
println!("{:?}", iter.next_back());
println!("{:?}", iter.next_back());
}
Результат выполнения кода:
Some(1)
Some(5)
Some(2)
Some(4)
Some(3)
Пример
Давайте вызовем метод next_back у пустого
итератора и убедимся, что он возвращает None:
fn main()
{
let mut iter = Vec::<i32>::new().into_iter();
let res = iter.next_back();
println!("{:?}", res);
}
Результат выполнения кода:
None
Пример
Давайте применим метод next_back к строке
"abcde" и получим символы с конца:
fn main()
{
let mut iter = "abcde".chars();
println!("{:?}", iter.next_back());
println!("{:?}", iter.next_back());
}
Результат выполнения кода:
Some('e')
Some('d')
Смотрите также
-
трейт
DoubleEndedIterator,
который предоставляет метод next_back -
метод
next,
который возвращает следующий элемент с начала -
метод
rev,
который разворачивает итератор -
метод
last,
который возвращает последний элемент итератора