Match pattern from vector
match, rust
Solution
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 {...}
}
Problem
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 {...}, } ```