Метод rposition
Метод rposition ищет элемент в итераторе,
двигаясь с конца к началу. Он возвращает
Some(usize) с индексом найденного элемента
или None, если элемент не найден.
Параметром метод принимает замыкание-предикат,
которое возвращает true для искомого элемента.
Метод требует, чтобы итератор реализовывал трейт
DoubleEndedIterator и ExactSizeIterator.
Синтаксис
iter.rposition(predicate)
Пример
Давайте найдём позицию последнего чётного числа в векторе:
fn main()
{
let vec = vec![1, 2, 3, 4, 5];
let res = vec.iter().rposition(|&x| x % 2 == 0);
println!("{:?}", res);
}
Результат выполнения кода:
Some(3)
Пример
Давайте найдём позицию последнего элемента,
который больше 10:
fn main()
{
let vec = vec![1, 2, 3, 4, 5];
let res = vec.iter().rposition(|&x| x > 10);
println!("{:?}", res);
}
Результат выполнения кода:
None
Пример
Давайте найдём позицию последней строки,
начинающейся с буквы "c":
fn main()
{
let vec = vec!["abcde", "cde", "12345", "cab"];
let res = vec.iter().rposition(|&x| x.starts_with("c"));
println!("{:?}", res);
}
Результат выполнения кода:
Some(3)