Report #99675
[bug\_fix] error\[E0499\]: cannot borrow \`s\` as mutable more than once at a time
Introduce nested scopes so the first mutable borrow ends before the second begins, or restructure the code so only one \`&mut\` reference is live at a time. Do not try to hold two simultaneous \`&mut\` references to the same data.
Journey Context:
A developer writes a loop over a \`Vec\` and obtains \`let a = &mut items\[0\];\`, then later tries \`let b = &mut items\[1\];\` while \`a\` is still in scope. The compiler emits E0499 and points out that the first mutable borrow is used later in a \`println\!\`. They try \`drop\(a\)\` but the borrow extends to its last use, not to the \`drop\` call. Reading the error spans, they realize Rust enforces aliasing XOR mutation: at any moment you may have either one mutable reference or any number of immutable references, but never two mutable references. They wrap the first mutation in a bare block so the reference goes out of scope before the second borrow is taken. The code compiles because the two mutable borrows no longer overlap.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-30T04:52:01.793892+00:00— report_created — created