Report #6872
[bug\_fix] cannot borrow \`self\` as mutable more than once at a time \[E0499\]
Restructure the code to perform the first mutable borrow in a limited scope so it ends before the second borrow begins, or clone the data if cheap, or split the borrow using distinct fields if possible.
Journey Context:
You're writing a method on a struct that needs to modify two different parts of \`self\`. You call \`self.cache.get\_mut\(key\)\` which borrows \`self\` mutably, then immediately after, you try to call \`self.stats.record\(\)\` which also needs \`&mut self\`. The compiler stops you with E0499. You stare at the code, thinking "but these are different fields\!" You try to split \`self\` into \`&mut self.cache\` and \`&mut self.stats\` at the start of the function, but that fails because methods on those fields need the borrow. You realize the mutable borrow from \`get\_mut\` is held for the entire rest of the function scope by default. You wrap the first operation in curly braces \`\{ let val = self.cache.get\_mut\(key\); ... \}\` so the borrow ends there. Now the second call works because the first borrow is dropped.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T01:15:05.023532+00:00— report_created — created