error[E0308]: mismatched types --> $DIR/issue-38371.rs:4:8 | LL | fn foo(&foo: Foo) { | ^^^^----- | | | | | expected due to this | expected struct `Foo`, found reference | help: did you mean `foo`: `&Foo` | = note: expected struct `Foo` found reference `&_` error[E0308]: mismatched types --> $DIR/issue-38371.rs:18:9 | LL | fn agh(&&bar: &u32) { | ^^^^ ---- expected due to this | | | expected `u32`, found reference | help: you can probably remove the explicit borrow: `bar` | = note: expected type `u32` found reference `&_` error[E0308]: mismatched types --> $DIR/issue-38371.rs:21:8 | LL | fn bgh(&&bar: u32) { | ^^^^^ --- expected due to this | | | expected `u32`, found reference | = note: expected type `u32` found reference `&_` error[E0529]: expected an array or slice, found `u32` --> $DIR/issue-38371.rs:24:9 | LL | fn ugh(&[bar]: &u32) { | ^^^^^ pattern cannot match with input type `u32` error: aborting due to 4 previous errors Some errors have detailed explanations: E0308, E0529. For more information about an error, try `rustc --explain E0308`.