Rust errors / Patterns and matching
Rust compiler error · checked with rustc 1.99.0
Rust error E0164: expected tuple struct or tuple variant, found associated function `A::new`
What it meansSomething which is neither a tuple struct nor a tuple variant was used as a pattern.
What rustc prints
error[E0164]: expected tuple struct or tuple variant, found associated function `A::new` --> main.rs:12:9 | 12 | A::new() => (), // error! | ^^^^^^^^ `fn` calls are not allowed in patterns | = help: for more information, visit https://doc.rust-lang.org/book/ch19-00-patterns.html
Real output of rustc 1.99.0 compiling the official example below (2021 edition). Your names and line numbers will differ; the first line is the part to match.
The compiler team's explanation
Something which is neither a tuple struct nor a tuple variant was used as a pattern.
Erroneous code example:
enum A {
B,
C,
}
impl A {
fn new() {}
}
fn bar(foo: A) {
match foo {
A::new() => (), // error!
_ => {}
}
}
This error means that an attempt was made to match something which is neither a tuple struct nor a tuple variant. Only these two elements are allowed as a pattern:
enum A {
B,
C,
}
impl A {
fn new() {}
}
fn bar(foo: A) {
match foo {
A::B => (), // ok!
_ => {}
}
}From rustc --explain E0164 (1.99.0), part of the Rust project, MIT or Apache-2.0. Official page.
Related errors
Up next
Often hit nextE0004: non-exhaustive patternsA related error from the same family.Read it next →Did this answer your question?