error[E0594]: cannot assign to `*x`, which is behind a `&` reference
  --> $DIR/issue-57989.rs:5:5
   |
LL | fn f(x: &i32) {
   |         ---- help: consider changing this to be a mutable reference: `&mut i32`
LL |     let g = &x;
LL |     *x = 0;
   |     ^^^^^^ `x` is a `&` reference, so the data it refers to cannot be written

error[E0506]: cannot assign to `*x` because it is borrowed
  --> $DIR/issue-57989.rs:5:5
   |
LL |     let g = &x;
   |             -- borrow of `*x` occurs here
LL |     *x = 0;
   |     ^^^^^^ assignment to borrowed `*x` occurs here
LL |
LL |     g;
   |     - borrow later used here

error: aborting due to 2 previous errors

Some errors have detailed explanations: E0506, E0594.
For more information about an error, try `rustc --explain E0506`.
