我是一个新手。我被下面的代码卡住了。
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
任何帮助都将不胜感激。你能解释一下我在哪里出了问题吗?
1条答案
按热度按时间v64noz0r1#
for s in &all_iterators
表示s
的类型为&Chars
(也就是说,您正在迭代不可变的引用)。但在迭代器上调用next
需要可变的引用(因为它将修改下层迭代器)。因此,您必须至少迭代Chars
的可变引用。请尝试以下操作: