rust 无法将'*s'借用为可变的,因为它在'&'引用之后,`s '是'&'引用

dm7nw8vv  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(96)

我是一个新手。我被下面的代码卡住了。

let mut all_iterators: Vec<Chars> = Vec::new();
    for s in strings {
        let a = s.chars();
        all_iterators.push(a);
    }

    let common_str: &str = "";
    loop {
        let common_char: Option<char>;

        for s in &all_iterators {
            if let Some(temp) = (*s).next() {}
        }
    }

(*s).next()上出现以下错误

cannot borrow `*s` as mutable, as it is behind a `&` reference
`s` is a `&` reference, so the data it refers to cannot be borrowed as mutable

任何帮助都将不胜感激。你能解释一下我在哪里出了问题吗?

v64noz0r

v64noz0r1#

for s in &all_iterators表示s的类型为&Chars(也就是说,您正在迭代不可变的引用)。但在迭代器上调用next需要可变的引用(因为它将修改下层迭代器)。因此,您必须至少迭代Chars的可变引用。请尝试以下操作:

for s in &mut all_iterators {
    // ...
}

相关问题