我无法弄清楚如何使以下代码正常工作。我认为需要在闭包中借用
错误:
&mut Vec
,但我不知道该如何表达。这段代码是从一个更大的函数中提取出来的,但显示了相同的错误。fn main() {
let mut v = vec![0; 10];
let next = |i| (i + 1) % v.len();
v[next(1usize)] = 1;
v.push(13);
v[next(2usize)] = 1;
}
错误:
error[E0502]: cannot borrow `v` as mutable because it is also borrowed as immutable
--> a.rs:9:5
|
5 | let next = |i| {
| --- immutable borrow occurs here
6 | (i + 1) % v.len()
| - first borrow occurs due to use of `v` in closure
...
9 | v[next(1usize)] = 1;
| ^ ---- immutable borrow later used here
| |
| mutable borrow occurs here
error: aborting due to previous error
v[(1usize + 1) % v.len()] = 1;
没有区别。您同时拥有可变和不可变的借用。 - Schwern