【发布时间】:2021-06-27 20:28:16
【问题描述】:
鉴于我使用 matches! 宏
当我尝试将它与枚举一起使用时
然后它显示出意外的行为。
请参阅playground 中也提供的以下最小示例
pub enum Test {
FIRST,
SECOND
}
fn main() {
let x = Test::FIRST;
let y = Test::SECOND;
println!("{}", matches!(x, Test::FIRST)); // <-- 'true', as expected
println!("{}", matches!(x, Test::SECOND)); // <-- 'false', as expected
println!("{}", matches!(Test::FIRST, x)); // <-- 'true', as expected
println!("{}", matches!(Test::SECOND, x)); // <-- 'true', NOT as expected
println!("{}", matches!(x, y)); // <-- 'true', NOT as expected
}
是否有一个简单的解释为什么matches! 的行为不符合预期以及
有没有一种简单的方法来比较两个 enum 变量的相等性?
【问题讨论】: