foo(x: &mut i32) -> i321 fn foo(x: &mut i32) -> i32 {
2   *x = 5;
3   unknown_code(&*x);
4   *x // must return 5
5 }
6 
main()7 fn main() {
8     println!("{}", foo(&mut 0));
9 }
10 
unknown_code(x: &i32)11 fn unknown_code(x: &i32) {
12     unsafe { *(x as *const i32 as *mut i32) = 7; } //~ ERROR borrow stack
13 }
14