error[E0308]: mismatched types --> $DIR/match-ergonomics.rs:4:10 | LL | match &x[..] { | ------ this expression has type `&[i32]` LL | [&v] => {}, | ^^ expected `i32`, found `&_` | = note: expected type `i32` found reference `&_` help: consider removing `&` from the pattern | LL - [&v] => {}, LL + [v] => {}, | error[E0529]: expected an array or slice, found `Vec` --> $DIR/match-ergonomics.rs:8:9 | LL | [&v] => {}, | ^^^^ pattern cannot match with input type `Vec` | help: consider slicing here | LL | match x[..] { | ++++ error[E0529]: expected an array or slice, found `Vec` --> $DIR/match-ergonomics.rs:20:9 | LL | [v] => {}, | ^^^ pattern cannot match with input type `Vec` | help: consider slicing here | LL | match x[..] { | ++++ error[E0308]: mismatched types --> $DIR/match-ergonomics.rs:29:9 | LL | match y { | - this expression has type `i32` LL | &v => {}, | ^^ expected `i32`, found `&_` | = note: expected type `i32` found reference `&_` help: consider removing `&` from the pattern | LL - &v => {}, LL + v => {}, | error[E0308]: mismatched types --> $DIR/match-ergonomics.rs:40:13 | LL | if let [&v] = &x[..] {} | ^^ ------ this expression has type `&[i32]` | | | expected `i32`, found `&_` | = note: expected type `i32` found reference `&_` help: consider removing `&` from the pattern | LL - if let [&v] = &x[..] {} LL + if let [v] = &x[..] {} | error: aborting due to 5 previous errors Some errors have detailed explanations: E0308, E0529. For more information about an error, try `rustc --explain E0308`.