对于普通的枚举类型(举例),
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)
这样的写法。
rustc版本:rustc 0.10-pre (33768c4 2014-03-07 02:51:39 -0800)