我有一个大型结构体,其中包含 s 向量String作为成员。我试图迭代这些并将每个传递给另一个带有&str参数的方法。后一种方法需要&mut self处理输入流,而我似乎无法协调借用。
我将其归结为一个简单的(?)示例来显示我遇到的问题。请参阅下文,以及Rust 游乐场上代码的链接
pub struct Configuration {
pub prefixes: Vec<String>,
}
impl Configuration {
pub fn check_one(&mut self, prefix: &str) -> bool {
"testy".starts_with(prefix)
}
pub fn check(&mut self) -> bool {
for prefix in &self.prefixes {
if self.check_one(prefix) {
return true;
}
}
return false;
}
}
fn main() {
let mut config = Configuration{ prefixes: vec!["fl".to_string()], };
dbg!(config.check());
}
Run Code Online (Sandbox Code Playgroud)
实际问题。如果我将参数设为引用 ( ),那么我会得到一个由编译器建议移动的self.check_one(&prefix)问题。美好的。但是,如果我尝试这样做,我会被告知,当我已经可变地借用它时,我不能一成不变地借用它,而且我似乎无法调和这两者。self.prefixes …