来自官方文档:
fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where P: FnMut(&Self::Item) -> bool
我不明白为什么需要一个可变引用来引用
self
。有人可以解释一下吗?它需要能够突变 self
,因为它正在推进迭代器。每次调用 next
时,迭代器都会发生变化:
fn next(&mut self) -> Option<Self::Item>;
这里是 find 方法的实现代码:
fn find<P>(&mut self, mut predicate: P) -> Option<Self::Item> where
Self: Sized,
P: FnMut(&Self::Item) -> bool,
{
for x in self.by_ref() {
if predicate(&x) { return Some(x) }
}
None
}