#equality #equals #eq

macro equalia

Automatically implement PartialEq for your structs

2 releases (1 stable)

1.0.0 Mar 18, 2021
0.1.0 Mar 16, 2021

#970 in Procedural macros

MIT/Apache

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

~1.5MB
~40K SLoC