Как решить проблему с двойным использованием mut в rust?

В коде на языке Rust я хочу сделать так, чтобы квадраты AABB двигались и при определенных ситуациях испытывали коллизию. И тут возникает проблема, которую я пока не знаю как решать:

   |
25 |         for (i, dyn_object) in self.dyn_objects.iter_mut().enumerate() {
   |                                ---------------------------------------
   |                                |
   |                                first mutable borrow occurs here
   |                                first borrow later used here ...
28 |             for (j, another_dyn_object) in self.dyn_objects.iter_mut().enumerate(){
   |                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^ second mutable borrow occurs here

Сам код:

pub fn run(&mut self, time: f32) {
    let (a, b) = (self.plt, self.prb);
    let lenght_object = self.dyn_objects.len();
    for (i, dyn_object) in self.dyn_objects.iter_mut().enumerate() {
        (**dyn_object).run(&Map::new(a, b), time);
        println!("len = {}, number = {}", lenght_object, i);
        for (j, another_dyn_object) in self.dyn_objects.iter_mut().enumerate(){

        }
    }
}

И тут вот собственно проблема, мне нужно пройтись по одному массиву и двинуть объекты, и в тоже время, когда я двигаю 1 объект, я должен пройтись еще раз по массиву и определить, есть ли коллизия. Как можно решить эту проблему?


Ответы (0 шт):