Fix E0502 by ensuring you do not hold an immutable reference while trying to borrow the same data mutably. Separate the read and write operations into distinct scopes so the immutable borrow ends before the mutable one begins.
let mut data = vec![1, 2, 3];
// Immutable borrow ends here
let first = data[0];
// Mutable borrow starts here
data[0] = 10;
println!("First: {}, Updated: {}", first, data[0]);
Alternatively, if you need to modify the data while reading, clone the value you need to read first, or restructure your logic to avoid holding both references simultaneously.