【发布时间】:2017-07-11 13:59:18
【问题描述】:
我正在尝试修改可变的sums: Vec<i64>,同时对其进行迭代。循环代码如下:
for (j, &mut sum) in sums.iter_mut().enumerate() {
if !(j == i) {
sum += n;
}
}
这是我得到的错误:
error[E0384]: re-assignment of immutable variable `sum`
--> mini_max_sum.rs:27:17
|
25 | for (j, &mut sum) in sums.iter_mut().enumerate() {
| --- first assignment to `sum`
26 | if !(j == i) {
27 | sum += n;
| ^^^^^^^^ re-assignment of immutable variable
这对我来说似乎完全是神秘的。 Rust 允许我从sums 可变地借用sum,但编译器阻止我实际修改它。省略 .enumerate() 甚至不会改变生成的错误代码。
我想知道如何修复循环。
【问题讨论】:
-
仅供参考,
!(j == i)通常写作j != i。 -
也许你想要这个? play.rust-lang.org/…