Crate field_comparable_derive

Crate field_comparable_derive 

Source
Expand description

§field_comparable_derive

Crates.io Documentation License


§English 🇬🇧

§Overview

field_comparable_derive is a procedural macro crate that automatically generates field comparison methods for Rust structs.
It is particularly useful when you need fine-grained comparison logic without manually implementing boilerplate code.

§Features

  • Derive macros for struct field comparisons.
  • Simple integration with existing types.
  • Helps reduce repetitive and error-prone code.

§Example

use field_comparable_derive::Comparable;

#[derive(Comparable)]
struct User {
    id: u32,
    name: String,
    email: String,
}

fn compare_user() {
    let u1 = User { id: 1, name: "Alice".into(), email: "alice@mail.com".into() };
    let u2 = User { id: 1, name: "Bob".into(), email: "alice@mail.com".into() };

    // Example: check field differences
    let diffs: bool = u1.differs_from(&u2);
    println!("{:?}", diffs);
    
    let name_diffs: bool = u1.name_differs_from(u2);
    let name_diffs: bool = u1.name_differs_from_ref(&u2);
    
    let email_diffs: bool = u1.email_differs_from(u2);
}

§Français 🇫🇷

§Présentation

field_comparable_derive est une macro procédurale qui génère automatiquement des méthodes de comparaison de champs pour vos structures Rust. Elle est particulièrement utile lorsque vous avez besoin d’une logique de comparaison fine sans écrire du code répétitif.

§Fonctionnalités

  • Macros derive pour comparer les champs de structures.
  • Intégration simple avec vos types existants.
  • Réduit le code répétitif et sujet aux erreurs.

§Exemple

use field_comparable_derive::Comparable;

#[derive(Comparable)]
struct Utilisateur {
    id: u32,
    nom: String,
    email: String,
}

fn compare_user() {
    let u1 = Utilisateur { id: 1, nom: "Alice".into(), email: "alice@mail.com".into() };
    let u2 = Utilisateur { id: 1, nom: "Bob".into(), email: "alice@mail.com".into() };

    // Exemple : vérifier les différences entre champs
    let diffs = u1.compare_fields(&u2);
    println!("{:?}", diffs);
    
    let name_diffs: bool = u1.name_differs_from(u2);
    let name_diffs: bool = u1.name_differs_from_ref(&u2);
    
    let email_diffs: bool = u1.email_differs_from(u2);
}

§License

This project is licensed under either:

at your option.


§Contribution

Contributions, issues and feature requests are welcome! Feel free to open a PR or an issue in the GitLab repository.


Derive Macros§

Comparable
Macro procédurale qui génère des méthodes de comparaison pour les structures Procedural macro that generates comparison methods for structs