Не получается скомпилировать код и я не понимаю чего от меня хочет компилятор, он выдаёт это:
error[E0502]: cannot borrow
counter
as mutable because it is also borrowed as immutable--> src/main.rs:38:17 | 35 | for (key, value) in &counter { | -------- | | | immutable borrow occurs here | immutable borrow later used here ... 38 | counter.insert(*key, count); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable borrow occurs here For more information about this error, try `rustc --explain E0502`. error: could not compile `variables` due to previous error
Вот сам код:
> fn main() {
> let mut vect = vec![1,5,5,9,8,2,4,10];
> println!("{}", foo1(&vect));
> println!("{}", foo2(&mut vect));
> println!("{}", foo3(&vect));
> }
>
> fn foo3(keys: &Vec<i32>) -> i32 {
> let mut values = Vec::new();
> let mut i = 0;
> while i <= keys.len() {
> values.push(0);
> i += 1;
> }
>
> let mut counter: HashMap<_, _> = keys.into_iter().zip(values.into_iter()).collect();
>
> for i in keys {
> for (key, value) in &counter {
> if *i == **key {
> let count = *value+1;
> counter.insert(*key, count);
> };
> }
> }
> return 0;
> }
> ```
`
> Я пытался поменять код, но компилятору не нравится это место:
`
> > 38 | counter.insert(*key, count);
> > | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable borrow occurs here
`
> И если поменять:
`
> error[E0499]: cannot borrow `counter` as mutable more than once at a time
> --> src/main.rs:38:17
> |
> 35 | for (key, value) in &mut counter {
> | ------------
> | |
> | first mutable borrow occurs here
> | first borrow later used here
> ...
> 38 | counter.insert(*key, count);
> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ second mutable borrow occurs here
`
> Помогите пожалуйста решить проблему.
`