Closed
Description
I tried this code:
enum Foo {
Bar(i32),
}
fn main() {
let f = Foo::Bar(3);
// compiler error that could be clearer:
if let Foo::Bar{} = f {
println!("hello");
}
// better suggestion for the compiler error:
if let Foo::Bar(_) = f {
println!("goodbye");
}
}
I expected to see this happen:
A suggestion to use a match pattern such as:
if let Foo::Bar(val) = f {
or
if let Foo::Bar(_) = f {
Instead, this happened:
error[E0027]: pattern does not mention field `0`
--> src/main.rs:9:11
|
9 | if let Foo::Bar{} = f {
| ^^^^^^^^^^ missing field `0`
|
help: include the missing field in the pattern
|
9 | if let Foo::Bar { 0 } = f {
| ^^^^^
help: if you don't care about this missing field, you can explicitely ignore it
|
9 | if let Foo::Bar { .. } = f {
| ^^^^^^
Metadata
Metadata
Assignees
Labels
Area: Messages for errors, warnings, and lintsArea: Suggestions generated by the compiler applied by `cargo fix`Category: This is a bug.Diagnostics: A diagnostic that is giving misleading or incorrect information.Diagnostics: A structured suggestion resulting in incorrect code.Relevant to the compiler team, which will review and decide on the PR/issue.