"无法摆脱借来的内容"当使用skip_while()时

时间:2015-12-30 13:32:42

标签: rust

我在使用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]
   }
}

1 个答案:

答案 0 :(得分:4)

skip_while以值为自我。但chars无法移动,因为&mut self仍然可以借用self.chars.by_ref().skip_while(|c| true); 。您可以使用by_ref来确保值skip_while gets是对包装器的引用。

{{1}}