radicle/serde_ext: `fn null_to_default`

This function, taken from
<https://github.com/serde-rs/serde/issues/1098#issuecomment-760711617>,
allows to serialize `null` as the value provided by `Default::default`
for any type that also implements `serde::Deserialize`.
This commit is contained in:
Lorenz Leutgeb 2026-03-31 16:04:48 +02:00
parent 1e132685bc
commit fb1808395e
No known key found for this signature in database
1 changed files with 10 additions and 0 deletions

View File

@ -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<T, D::Error>
where
T: serde::Deserialize<'de> + Default,
D: serde::Deserializer<'de>,
{
use serde::Deserialize as _;
Ok(Option::deserialize(deserializer)?.unwrap_or_default())
}