From 0dbbef209489e25bc0e2f9749e92c306ffb045ab Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 20 Nov 2023 10:21:06 -0500 Subject: [PATCH] Add is_default() --- src/lib.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 572d722..da6cb26 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -95,6 +95,14 @@ pub fn slice_is_empty(s: &[T]) -> bool { s.is_empty() } +/// Checks if a value is equal to its default. +/// This could be inefficient if default() is non-trivial. Should be used for things like +/// eliding serialization of zeroes and other default values with serde. +#[inline(always)] +pub fn is_default(v: &V) -> bool { + V::default().eq(v) +} + #[cold] #[inline(never)] pub extern "C" fn unlikely_branch() {}