From fb1808395e80920c66c53f8c1f39c23c3d6751ae Mon Sep 17 00:00:00 2001 From: Lorenz Leutgeb Date: Tue, 31 Mar 2026 16:04:48 +0200 Subject: [PATCH] radicle/serde_ext: `fn null_to_default` This function, taken from , allows to serialize `null` as the value provided by `Default::default` for any type that also implements `serde::Deserialize`. --- crates/radicle/src/serde_ext.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/crates/radicle/src/serde_ext.rs b/crates/radicle/src/serde_ext.rs index e39e891c..0be4643d 100644 --- a/crates/radicle/src/serde_ext.rs +++ b/crates/radicle/src/serde_ext.rs @@ -45,3 +45,13 @@ where let v: serde_json::Value = serde::Deserialize::deserialize(deserializer)?; Ok(T::deserialize(v).unwrap_or_default()) } + +/// Deserialize a value, but if it is `null`, return the default value. +pub(crate) fn null_to_default<'de, D, T>(deserializer: D) -> Result +where + T: serde::Deserialize<'de> + Default, + D: serde::Deserializer<'de>, +{ + use serde::Deserialize as _; + Ok(Option::deserialize(deserializer)?.unwrap_or_default()) +}