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}