Attempting to create a mutable reference while immutable references are still active.
Rust's Aliasing XOR Mutability rule states: at any given time, you can have either one mutable reference (`&mut T`) OR any number of immutable references (`&T`), but never both simultaneously.
Calling a mutating method on a collection while holding an active reference or iterator pointing into that collection.
1fn main() {2 let mut numbers = vec![1, 2, 3];3 let first = &numbers[0]; // Immutable reference created4 5 numbers.push(4); // ERROR E0502: Mutable borrow occurs here!6 7 println!("First item: {}", first); // Immutable borrow used here8}1fn main() {2 let mut numbers = vec![1, 2, 3];3 4 // Fix: Finish using immutable reference BEFORE taking mutable reference5 let first_val = numbers[0]; // Copy the integer value6 numbers.push(4); // Allowed7 8 println!("First item: {}", first_val); // 19}Simulate standard system builds to trigger compiler trace records and track memory crashes locally.
`first` borrows element 0 immutably. Calling `numbers.push(4)` requires a mutable borrow of `numbers` (because vector re-allocation could invalidate pointers). Rust prevents potential dangling references by rejecting E0502.