gpt4 book ai didi

rust - 如何在遍历向量时改变向量的元素?

转载 作者:行者123 更新时间:2023-11-29 08:14:00 24 4
gpt4 key购买 nike

<分区>

我正在遍历一个向量,我想更改其中一个元素。

fn main() {
let mut vector = vec![1, 2, 3, 4];

for (i, el) in vector.iter().enumerate() {
if i == 0 {
continue;
}
vector[i - 1] += el
}
}

这给了我编译器错误:

error[E0502]: cannot borrow `vector` as mutable because it is also borrowed as immutable
--> src/main.rs:8:9
|
4 | for (i, el) in vector.iter().enumerate() {
| ------ immutable borrow occurs here
...
8 | vector[i - 1] += el
| ^^^^^^ mutable borrow occurs here
9 | }
| - immutable borrow ends here

我明白为什么会出现这个错误。我借用 vector 在枚举范围的生命周期内是不可变的,然后试图改变该范围内的内部从而打破借用规则。我只是不明白如何正确地做到这一点。我想我需要为枚举可变借用?

我尝试了 mut 的各种组合, &mut我遇到了不同的编译器错误。我知道我可以把它变成 Vec<Cell<i32>>并以这种方式改变内容,但这对于这样一个简单的例子来说似乎有点过分了。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com