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)
这样的写法。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
rustc版本:rustc 0.10-pre (33768c4 2014-03-07 02:51:39 -0800)
不用 eq 的话只能模式匹配了:
很繁琐,但是可以写宏。