// Copyright: Ankitects Pty Ltd and contributors // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html use serde::Deserialize as DeTrait; pub(crate) use serde_aux::field_attributes::{ deserialize_bool_from_anything, deserialize_number_from_string, }; use serde_json::Value; pub(crate) fn default_on_invalid<'de, T, D>(deserializer: D) -> Result where T: Default + DeTrait<'de>, D: serde::de::Deserializer<'de>, { let v: Value = DeTrait::deserialize(deserializer)?; Ok(T::deserialize(v).unwrap_or_default()) }