default_ext/
lib.rs

1//! This library provides extension methods for the `Default` trait.
2//!
3//! ## Example
4//! case1:
5//! ```
6//! # use default_ext::DefaultExt;
7//! assert!(false.is_default());
8//! ```
9//!
10//! case2:
11//! ```ignore
12//! #[derive(serde::Serialize, serde::Deserialize)]
13//! struct Object {
14//!    #[serde(
15//!        default,
16//!        skip_serializing_if = "default_ext::DefaultExt::is_default",
17//!    )]
18//!    is_test: bool,
19//! }
20//! ```
21
22pub trait DefaultExt {
23    fn is_default(&self) -> bool;
24}
25
26impl<T> DefaultExt for T
27where
28    T: Default + PartialEq,
29{
30    fn is_default(&self) -> bool {
31        self == &Self::default()
32    }
33}