E0128
Wrong number of sub-patterns
ErrorA variant pattern lists one sub-pattern for each field of the variant: Add(a, b) for a variant with two fields.
Why
Sub-patterns match fields by position, so a missing or extra one leaves it unclear which field each name binds. Use _ for a field you do not need.
Broken
enum Expr {
Num(i64)
Add(i64, i64)
}
fn eval(e: Expr) -> i64 {
match e {
Num(n) => n
Add(a) => a
}
}
fn main() {
print(eval(Expr.Num(1)))
print(eval(Expr.Add(2, 3)))
}
What sisu says
error[E0128]: `Add` has 2 fields, the pattern has 1 --> E0128.sisu:9:9 | 9 | Add(a) => a | ^^^^^^ sisu: 1 error sisu: for more on a code, run `sisu explain <code>`: E0128
Fixed
enum Expr {
Num(i64)
Add(i64, i64)
}
fn eval(e: Expr) -> i64 {
match e {
Num(n) => n
Add(a, _) => a
}
}
fn main() {
print(eval(Expr.Num(1)))
print(eval(Expr.Add(2, 3)))
}
Sisu