fn flatten<'a, 'b, T>(x: &'a &'b T) -> &'a T { x } fn main() { let mut x = "original"; let y = &x; let z = &y; let w = flatten(z); x = "modified"; //~^ ERROR cannot assign to `x` because it is borrowed [E0506] println!("{}", w); // prints "modified" }