Let's say I'm having this function:
match symbol {
letter @ 'a'..'z' => Token { ... },
digit @ '0'..'9' => Token { ... },
whitespace @ ['\r', '\t', '\n'] => Token {...}
}
This obviously doesn't work. Is there any way to have whitespace use similar construct, without writing this like:
match symbol {
letter @ 'a'..'z' => Token { ... },
digit @ '0'..'9' => Token { ... },
'\r' => Token {...},
'\n' => Token {...},
'\r' => Token {...},
}
You can combine patterns using the pipe (|) operator:
match symbol {
letter @ 'a'..'z' => Token { ... },
digit @ '0'..'9' => Token { ... },
'\r' | '\t' | '\n' => Token {...}
}
But binding match to a variable is ugly:
match symbol {
letter @ 'a'..'z' => Token { ... },
digit @ '0'..'9' => Token { ... },
ws @ '\r' | ws @ '\t' | ws @ '\n' => Token {...}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With