的左侧部分
=>
必须是模式,并且很少有表达式也是有效的模式,这不是调用表达式的情况。但是命名常量可以匹配,因此可以执行以下操作:
fn main() -> Result<(), Box<std::error::Error>> {
let num = 0;
const MAX: u64 = u64::max_value();
match num {
MAX => println!("Is u64::max_value()"),
_ => println!("Is boring")
}
Ok(())
}
Link to playground
这也有助于让编译器检查匹配是否详尽(哪些模式保护
don't
):
const fn true_fn() -> bool { true }
fn main() -> Result<(), Box<std::error::Error>> {
let num = true;
const TRUE: bool = true_fn();
match num {
TRUE => println!("Is u64::max_value()"),
false => println!("Is boring")
}
Ok(())
}
Link to playground