#partial-eq #struct-fields

skippable-partialeq

PartialEq,但你可以忽略字段

1 个稳定版本

1.0.0 2024 年 6 月 20 日

#380测试

AGPL-3.0 或更高版本

15KB
65

skippable-partialeq

PartialEq,但你可以忽略字段

这个包提供了一个自定义 derive 宏 SkippablePartialEq,允许你在忽略基于自定义规则的字段(如后缀)以及特定字段的情况下为结构体实现 PartialEq

用法

首先,将 SkippablePartialEq 添加为依赖项。

cargo add skippable-partialeq

然后,为你的结构体 derive SkippablePartialEq

use skippable_partialeq::SkippablePartialEq;

#[derive(Debug, SkippablePartialEq)]
#[exclude_suffix(at)]
pub struct Post {
    pub id: i64,
    pub content: String,
    pub author: i32,
    pub created_at: DateTime<Utc>,
    pub updated_at: Option<DateTime<Utc>>,
}

这将生成一个 PartialEq 的实现,忽略以 _at 结尾的字段,同时仍然检查 Option 的外部 None & Some 值。此属性支持用逗号分隔的多个值。

您还可以使用 #[skip] 属性来过滤特定字段

use skippable_partialeq::SkippablePartialEq;

#[derive(Debug, SkippablePartialEq)]
pub struct Post {
    pub id: i64,
    pub content: String,
    pub author: i32,
    #[skip]
    pub creation_date: DateTime<Utc>,
}

这将排除 creation_date 的比较。

依赖项

~285–740KB
~18K SLoC