error[E0308]: mismatched types --> $DIR/ref-mut-inside-shared-ref-pat.rs:16:17 | LL | if let Some(&Some(ref mut x)) = &mut Some(Some(0)) { | ^^^^^^^^^^^^^^^^ ------------------ this expression has type `&mut Option>` | | | expected `Option<{integer}>`, found `&_` | = note: expected enum `Option<{integer}>` found reference `&_` error[E0308]: mismatched types --> $DIR/ref-mut-inside-shared-ref-pat.rs:22:12 | LL | if let &Some(Some(ref mut x)) = &mut Some(Some(0)) { | ^^^^^^^^^^^^^^^^^^^^^^ ------------------ this expression has type `&mut Option>` | | | types differ in mutability | = note: expected mutable reference `&mut Option>` found reference `&_` error[E0308]: mismatched types --> $DIR/ref-mut-inside-shared-ref-pat.rs:31:9 | LL | let &pat!(x) = &mut 0; | ^^^^^^^^ ------ this expression has type `&mut {integer}` | | | types differ in mutability | = note: expected mutable reference `&mut {integer}` found reference `&_` error[E0308]: mismatched types --> $DIR/ref-mut-inside-shared-ref-pat.rs:36:9 | LL | let &(ref mut a, ref mut b) = &mut (true, false); | ^^^^^^^^^^^^^^^^^^^^^^^ ------------------ this expression has type `&mut (bool, bool)` | | | types differ in mutability | = note: expected mutable reference `&mut (bool, bool)` found reference `&_` error[E0308]: mismatched types --> $DIR/ref-mut-inside-shared-ref-pat.rs:43:9 | LL | let &[x] = &mut &mut [0]; | ^^^^ ------------- this expression has type `&mut &mut [{integer}; 1]` | | | types differ in mutability | = note: expected mutable reference `&mut &mut [{integer}; 1]` found reference `&_` error: aborting due to 5 previous errors For more information about this error, try `rustc --explain E0308`.