Report #16285
[bug\_fix] cannot borrow \`vec\` as mutable more than once at a time when mutating a Vec while iterating or holding references to its elements
Restructure to use index-based iteration \`for i in 0..vec.len\(\)\`, or collect modifications into a temporary Vec for later application, or use \`Vec::retain\` or \`split\_mut\` depending on access patterns. Avoid holding borrows across mutation points.
Journey Context:
Developer writes a loop \`for item in &mut vec\` then attempts to \`vec.push\(new\_item\)\` inside the loop body. The compiler halts with a double mutable borrow error, noting that the iterator holds a mutable borrow until it is dropped. The developer tries using \`vec.iter\_mut\(\)\` explicitly but hits the same restriction. They attempt to work around by collecting items to add into a separate \`Vec\` inside the loop, then calling \`vec.extend\(temp\)\` after the loop completes, which succeeds. They eventually understand that Rust's aliasing rules prevent simultaneous reading \(iterating\) and appending \(which may reallocate\) to the same container without explicit index-based access or splitting the borrow.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T02:18:24.609318+00:00— report_created — created