刚开始生 rust 。我被卡住了。
我有一个Vec of Vec of &str(基本上是CSV行的集合,每行都是Vec of &str)。
我想循环访问整个集合,并有条件地更改一些单元格的值。
我已经尝试了一些方法,用迭代器和枚举()来操作索引。
但最后,我总是遇到这个错误-〉错误[E0499]:不能一次多次借用*row
作为可变变量。
我真的不知道该怎么做。有什么解决办法吗?
//iterate over the collection of rows
for row in &mut raw_data_rows[0..] {
//iterate over row cells
for item in &mut row[0..] {
//if cell == "n/a"
if item.to_string() == "n/a" {
//change it to something else
todo!(); //change the value of the item
}
}
}
先谢谢你了。
1条答案
按热度按时间t3psigkw1#
我看不出有什么问题,我只是用
.iter_mut()
显式地进行了迭代。请注意,我不确定
&str
是否是您想要的,使用String
将允许修改它们的内容,而不仅仅是替换它们。正如在评论中所要求的,下面是为什么我发现这些迭代是明确的:
v.iter_mut()
意味着在每次迭代中,我想获得对下一个元素的互斥(可变)引用。v.iter()
意味着在每次迭代时,我想获得对下一个元素的共享(不可变)引用。v.into_iter()
意味着在每次迭代时我想要消费/提取下一个元素(v
在那之后应该不可用)。v
上迭代会隐式调用v.into_iter()
,它应该 * 消费 * 元素,但如果v
不是一个值,而是一个容器的引用,它的行为就像v.iter()
一样,这在我看来是相当令人困惑的。这就是为什么我在迭代序列时总是试图明确我的意图。