error[E0515]: cannot return reference to local variable `x` --> $DIR/polonius-smoke-test.rs:6:5 | LL | &x | ^^ returns a reference to data owned by the current function error[E0503]: cannot use `x` because it was mutably borrowed --> $DIR/polonius-smoke-test.rs:12:13 | LL | let y = &mut x; | ------ borrow of `x` occurs here LL | let z = x; | ^ use of borrowed `x` LL | let w = y; | - borrow later used here error[E0505]: cannot move out of `x` because it is borrowed --> $DIR/polonius-smoke-test.rs:18:13 | LL | pub fn use_while_mut_fr(x: &mut i32) -> &mut i32 { | - let's call the lifetime of this reference `'1` LL | let y = &mut *x; | ------- borrow of `*x` occurs here LL | let z = x; | ^ move out of `x` occurs here LL | y | - returning this value requires that `*x` is borrowed for `'1` error[E0505]: cannot move out of `s` because it is borrowed --> $DIR/polonius-smoke-test.rs:42:5 | LL | let r = &mut *s; | ------- borrow of `*s` occurs here LL | let tmp = foo(&r); LL | s; | ^ move out of `s` occurs here LL | tmp; | --- borrow later used here error: aborting due to 4 previous errors Some errors have detailed explanations: E0503, E0505, E0515. For more information about an error, try `rustc --explain E0503`.