Poniższy kod (playground)Dlaczego ten wzór dopasowania jest niedostępny w przypadku używania niedosłownych wzorców?
let max_column = 7;
edge = match current_column {
0 => Edge::Left,
max_column => Edge::Right,
_ => Edge::NotAnEdge
};
wyniki w następujący błąd:
error[E0001]: unreachable pattern
--> <anon>:10:9
|
10 | _ => Edge::NotAnEdge
| ^this is an unreachable pattern
|
note: this pattern matches any value
--> <anon>:9:9
|
9 | max_column => Edge::Right,
| ^^^^^^^^^^
Wymiana zmiennej max_column
z dosłownych działa dobrze:
let max_column = 7;
edge = match current_column {
0 => Edge::Left,
7 => Edge::Right,
_ => Edge::NotAnEdge
};
Dlaczego _
nieosiągalny w pierwszy przykład, kiedy można go uzyskać dla dowolnych wartości, gdzie current_column != max_column
?
Jeśli 'max_column' był stałą, to by działało, ale wzory działają tylko statycznie. –