我在Rust中实现了一个解析器,而空白是我想在match模式中重用的常见模式.
此代码有效:
let ch = ' ';
match ch {
' ' | '\n' | '\t' | '\r' => println!("whitespace"),
_ => println!("token"),
}
Run Code Online (Sandbox Code Playgroud)
如果我每次都需要继续指定空白模式,这将变得非常重复.我想定义一次并重用它.我想做的事情如下:
let whitespace = ' ' | '\n' | '\t' | '\r';
let ch = ' ';
match ch {
whitespace => println!("whitespace"),
_ => println!("token"),
}
Run Code Online (Sandbox Code Playgroud)
编译器不喜欢ws赋值.它将其解释|为二进制运算而不是交替运算.
模式可以以某种方式存储在变量中吗?有没有更好或更惯用的方法来做到这一点?
rust ×1