error[E0502]: cannot borrow `x` as mutable because it is also borrowed as immutable
Rust’s borrow checker prevents you from having mutable and immutable references at the same time.
Fix 1: Limit the scope of borrows
let mut data = vec![1, 2, 3];
// ❌ Immutable borrow lives too long
let first = &data[0];
data.push(4); // Error! Can't mutate while borrowed
println!("{}", first);
// ✅ Use the immutable borrow before mutating
let first = &data[0];
println!("{}", first); // Done with immutable borrow
data.push(4); // Now OK
Fix 2: Clone the data
let mut data = vec![1, 2, 3];
let first = data[0].clone(); // Own the value
data.push(4); // Fine — no borrow conflict
println!("{}", first);
Fix 3: Use interior mutability
use std::cell::RefCell;
let data = RefCell::new(vec![1, 2, 3]);
data.borrow_mut().push(4);