diff --git a/src/libcore/iter.rs b/src/libcore/iter.rs index d0734f9c0395f..417bcab5140af 100644 --- a/src/libcore/iter.rs +++ b/src/libcore/iter.rs @@ -723,11 +723,12 @@ pub trait IteratorExt: Iterator + Sized { P: FnMut(Self::Item) -> bool, Self: ExactSizeIterator + DoubleEndedIterator { - let len = self.len(); - for i in (0..len).rev() { - if predicate(self.next_back().expect("rposition: incorrect ExactSizeIterator")) { + let mut i = self.len() - 1; + while let Some(v) = self.next_back() { + if predicate(v) { return Some(i); } + i -= 1; } None }