我在使用 时遇到问题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]
}
}
Run Code Online (Sandbox Code Playgroud)
Skip_while以 self 为值。但chars
无法移动,因为它仍然被 可变地借用&mut self
。您可以使用by_ref来确保skip_while 获取的值是对包装器的引用。
self.chars.by_ref().skip_while(|c| true);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
620 次 |
最近记录: |