Rust 怎么经典地比较两个枚举值是否相同?
对于普通的枚举类型(举例),
enum ErrorCode {
EINVAL = 1,
EAGAIN = 2,
}
let e1 = EINVAL;
let e2 = EAGAIN;
这样的判断是非法的:
assert_eq!(e1, e2);
如果不实现 trait
Eq
的话,
impl Eq for ErrorCode {
fn eq(&self, other :&ErrorCode) -> bool {
*self as int == *other as int
}
}
也除了
e1 as int == e2 as int
的话,
是否有别的典型的办法可以比较
e1
和
e2
是否为同一值?
总觉得这两个办法都有点别扭。另外,即使实现了
Eq
,貌似
assert_eq!(e1, e2)
也会报错,只能用
assert!(e1 == e2)
这样的写法。
始音カイコ
11 years, 4 months ago