我在使用std::iter::Peekable
时遇到问题。为什么以下代码无法编译?
// rustc 1.7.0-nightly (b4707ebca 2015-12-27)
use std::iter::*;
struct Foo<'a> {
chars: Peekable<Chars<'a>>,
}
impl<'a> Foo<'a> {
fn foo(&mut self) {
self.chars.next(); // Ok
self.chars.skip_while(|c| true); // error: cannot move out of borrowed content [E0507]
}
}
答案 0 :(得分:4)
skip_while以值为自我。但chars
无法移动,因为&mut self
仍然可以借用self.chars.by_ref().skip_while(|c| true);
。您可以使用by_ref来确保值skip_while gets是对包装器的引用。
{{1}}