Rust中如何比较包含枚举的元组?
解决Rust中包含枚举的元组无法用
assert_eq!比较的问题 问题根源
assert_eq!宏要求参与比较的类型必须同时实现PartialEq(用于相等性判断)和Debug(用于断言失败时输出调试信息)。你定义的Test枚举默认没有自动实现这两个trait,因此编译会报错。
最简解决方案
给枚举添加#[derive(PartialEq, Debug)]属性,让Rust自动生成这两个trait的实现:
#[derive(PartialEq, Debug)] enum Test { Foo, Bar } #[test] fn test_tuple_with_enum() { // 模拟运行时生成的元组 let result = (1, Test::Foo); assert_eq!(result, (1, Test::Foo)); }
补充说明
- 如果枚举包含自定义结构体等复杂字段,只要这些字段也实现了
PartialEq和Debug,derive宏依然能正常工作。 - 若需要自定义相等判断逻辑,可以手动实现
PartialEqtrait,但测试场景下自动derive的实现完全满足需求。
内容的提问来源于stack exchange,提问作者Elijah M
相关产品推荐
相关产品推荐

