2 releases (1 stable)
1.0.0 | Mar 18, 2021 |
---|---|
0.1.0 | Mar 16, 2021 |
#1061 in Procedural macros
7KB
127 lines
Equalia
This package helps you with implementation of Eq and PartialEq for structs. You can provide which struct fields to compare and which not.
Structs
When we want to define which fields are omitted, or we want to provide custom function to return value to be compared.
#[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
}
When single field ins struct can identify equality.
#[derive(Equalia)]
#[equalia(hash)]
pub struct Entity {
#[equalia(only)]
id: u8,
// this value will be ignored
value2: u8,
}
Hash
When you provide #[equalia(hash)]
for struct/enum equalia will automatically
implement Hash
trait from given configuration.
author
Peter Vrba phonkee@pm.me
Dependencies
~2MB
~45K SLoC