The syntax is
alt x {
mypat where mycond { ... }
}
The condition may refer to any of the variables bound by the pattern.
When a guard fails, pattern-matching continues with the next pattern.
Closes #857
16 lines
307 B
Rust
16 lines
307 B
Rust
fn main() {
|
|
let a = alt 10 {
|
|
x when x < 7 { 1 }
|
|
x when x < 11 { 2 }
|
|
10 { 3 }
|
|
_ { 4 }
|
|
};
|
|
assert a == 2;
|
|
|
|
let b = alt {x: 10, y: 20} {
|
|
x when x.x < 5 && x.y < 5 { 1 }
|
|
{x, y} when x == 10 && y == 20 { 2 }
|
|
{x, y} { 3 }
|
|
};
|
|
assert b == 2;
|
|
}
|