#相等性 #equals #eq

equalia

自动为你的结构体实现 PartialEq

2个版本 (1个稳定版)

1.0.0 2021年3月18日
0.1.0 2021年3月16日

#928过程宏

MIT/Apache

7KB
127 代码行

Equalia

此包帮助你实现结构体的 Eq 和 PartialEq。你可以指定哪些字段需要比较,哪些不需要。

结构体

当我们想要定义哪些字段被省略,或者我们想要提供自定义函数来返回比较值时。

#[derive(Equalia)]
#[equalia(hash)]
pub struct Entity {
    
    #[equalia(skip)]
    value1: u8,

    #[equalia(map = "map_func")]
    value2: u8,
}

// map function that changes value
fn map_func(input: &u8) -> u8 {
    input * 2
}

当结构体中的单个字段可以标识相等性时。

#[derive(Equalia)]
#[equalia(hash)]
pub struct Entity {
    
    #[equalia(only)]
    id: u8,

    // this value will be ignored
    value2: u8,
}

哈希

当为结构体/枚举提供 #[equalia(hash)] 时,equalia 将根据给定配置自动实现 Hash 特性。

作者

Peter Vrba [email protected]

依赖项

~2MB
~42K SLoC