Borrow checker errors occur when you violate Rust's rules about having multiple mutable references or a mutable and immutable reference to the same data at the same time. To fix the most common error, ensure you only have one mutable reference or multiple immutable references, and that references do not outlive the data they point to.
fn main() {
let mut s = String::from("hello");
let r1 = &s; // Immutable borrow
let r2 = &s; // Immutable borrow
println!("{} and {}", r1, r2);
// r1 and r2 are no longer used here
let r3 = &mut s; // Mutable borrow is now allowed
println!("{r3}");
}