You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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宏依然能正常工作。
  • 若需要自定义相等判断逻辑,可以手动实现PartialEq trait,但测试场景下自动derive的实现完全满足需求。

内容的提问来源于stack exchange,提问作者Elijah M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 23:35:19