fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where P: FnMut(&Self::Item) -> bool
我不明白为什么它需要self
的可变引用。有人可以解释一下吗?
答案 0 :(得分:6)
它需要能够变异self
,因为它正在推进迭代器。每次调用next
时,迭代器都会发生变异:
fn next(&mut self) -> Option<Self::Item>;
以下是the implementation of 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
}