// edition:2021 // Test that we can't mutate a place if we need to deref an imm-borrow // to reach it. fn imm_mut_ref() { let mut x = String::new(); let y = String::new(); let mref_x = &mut x; let ref_mref_x = &mref_x; let c = || { //~^ ERROR: cannot borrow `**ref_mref_x` as mutable, as it is behind a `&` reference **ref_mref_x = y; }; c(); } fn mut_imm_ref() { let x = String::new(); let y = String::new(); let mut ref_x = &x; let mref_ref_x = &mut ref_x; let c = || { //~^ ERROR: cannot borrow `**mref_ref_x` as mutable, as it is behind a `&` reference **mref_ref_x = y; }; c(); } fn main() { imm_mut_ref(); mut_imm_ref(); }