我想通过使用小型帮助程序闭包来使代码的某些部分更易于阅读。因为借用而无法分配给闭包中使用的变量
fn main() {
let mut loop_index = 0;
let get_src_index = || return loop_index % 2;
let get_dst_index = || return (loop_index + 1) % 2;
loop_index += 1;
}
有几封是利用get_src_index()
和get_dst_index()
,但他们都没有这个问题很重要。问题是,我不能再修改loop_index
:
error[E0506]: cannot assign to `loop_index` because it is borrowed
--> src/main.rs:6:5
|
4 | let get_src_index = || return loop_index % 2;
| -- borrow of `loop_index` occurs here
5 | let get_dst_index = || return (loop_index + 1) % 2;
6 | loop_index += 1;
| ^^^^^^^^^^^^^^^ assignment to borrowed `loop_index` occurs here
我不明白为什么锈不允许递增loop_index
变量。有没有更“生锈”的方式来做到这一点?
编译器的消息似乎不符合上面的代码。请制作一个MCVE,最好带一个链接到[Rust Playground](https://play.rust-lang.org/)。 –
@ E_net4也吸引了我。 OP将代码拆分成两个块,但它是两个组合出现错误。 – Shepmaster