error[E0308]: mismatched types
  --> $DIR/issue-109991.rs:11:11
   |
LL |     let c: usize;
   |            ----- expected due to this type
LL |
LL |     (c) = (&123);
   |           ^^^^^^ expected `usize`, found `&{integer}`
   |
help: consider removing the borrow
   |
LL -     (c) = (&123);
LL +     (c) = (123);
   |

error[E0308]: mismatched types
  --> $DIR/issue-109991.rs:12:9
   |
LL |     let b: usize;
   |            ----- expected due to this type
...
LL |     (a, b) = (123, &mut 123);
   |         ^ expected `usize`, found `&mut {integer}`

error[E0308]: mismatched types
  --> $DIR/issue-109991.rs:15:6
   |
LL |     let x: String;
   |            ------ expected due to this type
LL |     (x,) = (1,);
   |      ^ expected `String`, found integer

error[E0308]: mismatched types
  --> $DIR/issue-109991.rs:18:6
   |
LL |     let x: i32;
   |            --- expected due to this type
LL |     [x] = [&1];
   |      ^ expected `i32`, found `&{integer}`

error[E0308]: mismatched types
  --> $DIR/issue-109991.rs:21:6
   |
LL |     let x: &i32;
   |            ---- expected due to this type
LL |     [x] = [1];
   |      ^ expected `&i32`, found integer

error[E0308]: mismatched types
  --> $DIR/issue-109991.rs:24:9
   |
LL |     let b: usize;
   |            ----- expected due to this type
...
LL |     (a, b) = x;
   |         ^ expected `usize`, found `&mut {integer}`

error[E0308]: mismatched types
  --> $DIR/issue-109991.rs:26:31
   |
LL |     S { a, b } = S { a: 1, b: &mut 2 };
   |                               ^^^^^^ expected `usize`, found `&mut {integer}`
   |
help: consider removing the borrow
   |
LL -     S { a, b } = S { a: 1, b: &mut 2 };
LL +     S { a, b } = S { a: 1, b: 2 };
   |

error: aborting due to 7 previous errors

For more information about this error, try `rustc --explain E0308`.
