Как решить проблему с двойным использованием 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 объект, я должен пройтись еще раз по массиву и определить, есть ли коллизия. Как можно решить эту проблему?