小编tet*_*one的帖子

如何迭代存储在结构中的字符串向量而不移动它们?

我有一个大型结构体,其中包含 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 …

ownership rust borrow-checker

4
推荐指数
1
解决办法
80
查看次数

标签 统计

borrow-checker ×1

ownership ×1

rust ×1