@famousman204

Как исправить «cannot borrow as mutable»?

Привет! я новичок в раст. Не понимаю, чего от меня хочет компилятор

// HashMap<MlxEvent, Vec<Box<dyn Fn() -> i32>>> on_event_closure 
    pub fn on_event(&mut self, event: MlxEvent, f : Box<dyn Fn() -> i32>) {
        match self.on_event_closure.get(&event) {
            None => {
                self.on_event_closure.insert(event, Vec::new());
                self.on_event_closure.get(event.borrow()).expect("Fail insert func").push(f);
            }
            _Some => {
                self.on_event_closure.get(event.borrow()).expect("Fail insert func").push(f);
            }
        }
    }


error[E0596]: cannot borrow data in a `&` reference as mutable
--> src/mlx/mod.rs:166:17
|
166 | self.on_event_closure.get(event.borrow()).expect("Fail insert func").push(f);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot borrow as mutable
  • Вопрос задан
  • 186 просмотров
Решения вопроса 1
vabka
@vabka
Токсичный шарпист
Попробуй вместо того что у тебя написано использовать entry()
self.on_event_closure
  .entry(event)
  .or_insert_with(Vec::new)
  .and_modify(move |vec| vec.push(f));


А нельзя borrow as mutable из-за того что get заимствует on_event_closure
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы