Report #38842
[bug\_fix] cannot borrow \`vec\` as mutable more than once at a time \(E0499\)
Restructure to avoid simultaneous mutable borrows: collect changes into a temporary Vec and apply them after the loop, or use indices \(\`for i in 0..vec.len\(\)\`\) instead of a mutable iterator.
Journey Context:
Developer writes a loop: \`for item in &mut vec \{ vec.push\(item.clone\(\)\); \}\`. The compiler throws E0499. The developer is confused because they think the mutable borrow in the for loop is temporary. They try adding explicit drop\(item\) or scopes. They search online and find that the mutable borrow from the iterator lasts for the entire loop body. They realize they cannot mutate the container while iterating over it mutably. The fix involves collecting indices or using \`Vec::retain\` or iterating over indices with \`for i in 0..vec.len\(\)\`. They restructure to collect new items into a separate Vec first, then append them after the loop, which satisfies the borrow checker by separating the borrows in time.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T19:40:20.967161+00:00— report_created — created