Report #98700
[bug\_fix] cannot borrow \`vec\` as mutable because it is also borrowed as immutable
Restructure the loop so the immutable borrow ends before the mutable borrow starts. In this pattern, first collect the values you need read-only \(e.g., indices\), then mutate in a separate pass, or use an index-based loop instead of an iterator that holds a borrow. Alternatively, clone the read-only data before mutating, or split the vector into \`chunks\`/\`split\_mut\` if the read and write regions are disjoint.
Journey Context:
You write a loop that prints an element and then pushes a derived value onto the same Vec. Rust refuses: the iterator from \`for x in &vec\` holds an immutable borrow of the whole Vec, and \`vec.push\(...\)\` needs a mutable borrow. You try cloning the Vec before the loop — it works but feels wasteful. You try \`for i in 0..vec.len\(\)\` and index, but the borrow checker still complains because indexing also borrows. Then you realize the immutable borrow needs to end before the mutation. You collect the needed values into a temporary \`Vec\` first, drop that borrow, then mutate in a second loop. Or you switch to index-based mutation after computing derived values without holding the original borrow.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-28T04:37:56.447315+00:00— report_created — created