Display correct unused field suggestion for nested struct patterns
Extends https://github.com/rust-lang/rust/pull/47922 by checking more sophisticated patterns (e.g. references, slices, etc.).
Before:
```
warning: unused variable: `bar`
--> src/main.rs:37:21
|
37 | &Foo::Bar { bar } => true,
| ^^^ help: consider using `_bar` instead
|
= note: #[warn(unused_variables)] on by default
```
After:
```
warning: unused variable: `bar`
--> src/main.rs:37:21
|
37 | &Foo::Bar { bar } => true,
| ^^^ help: try ignoring the field: `bar: _`
|
= note: #[warn(unused_variables)] on by default
```
Fixes #50303.
r? @estebank