Skip to content
This repository has been archived by the owner on Jun 20, 2024. It is now read-only.

caioluis/timeless-partialeq

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DEPECRATED -> NEW CRATE: SkippablePartialEq

timeless-partialeq

PartialEq, but ignores timestamps, ideal for API testing

This crate provides a custom derive macro TimelessPartialEq that allows you to implement PartialEq for structs while ignoring fields based on their suffixes.

Usage

First, add TimelessPartialEq as a dependency.

cargo add timeless-partialeq

Then, derive TimelessPartialEq for your struct:

use timeless_partialeq::TimelessPartialEq;

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

This will generate an implementation of PartialEq that ignores the fields ending with _at, while still checking for Option's outer None & Some values.

You can also use the #[exclude_suffix] attribute to filter by specific suffixes:

use timeless_partialeq::TimelessPartialEq;

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

This would exclude fields ending with _at and/or date.

About the crate

This crate was made to solve a very specific problem: assert the equality of two objects despite the timestamp differences. It was also made so that I could study proc macros. However, just after a day after publishing it, I realized that it can be broader than just timestamps.

I will not make a commitment into iterating this quickly, but it is in my plans to expand the scope of the crate.

About

PartialEq, but ignores timestamps, ideal for API testing

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Languages