Hey,
Is there any idiomatic way of solving the following error: Rust Playground Example
error[E0499]: cannot borrow `*self` as mutable more than once at a time
--> src/main.rs:26:13
|
25 | for (_,v) in self.map.iter_mut() {
| -------------------
| |
| first mutable borrow occurs here
| first borrow later used here
26 | self.flag_value(v);
| ^^^^ second mutable borrow occurs here
This a reduced example of a problem I recently ran into. The check_values() function is meant to be called in numerous location throughout the code.
I'm iterating a set of values in a hashmap and when some value matches a condition (not in the example) i would like to add it to a flagged list to be processed at a later stage as well as update the existing value in the map.
I've managed to work around the problem, by temporarily moving the hashmap to a temp variable using std::mem::replace and then back again once the loop is done.
That being said, I was wondering whether there was a "cleaner" and/or more idiomatic way of handling this scenario?