|
|
|
@ -8,6 +8,11 @@ where
|
|
|
|
|
D: Deserializer<'de>,
|
|
|
|
|
T: Deserialize<'de>,
|
|
|
|
|
{
|
|
|
|
|
if !deserializer.is_human_readable() {
|
|
|
|
|
// bincode, will have already been serialized as Vec<T>
|
|
|
|
|
return Ok(Deserialize::deserialize(deserializer)?);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Deserialize the JSON value using Serde's Value type
|
|
|
|
|
let value: Value = Deserialize::deserialize(deserializer)?;
|
|
|
|
|
|
|
|
|
@ -24,6 +29,11 @@ pub fn wasei<'de, D>(deserializer: D) -> Result<bool, D::Error>
|
|
|
|
|
where
|
|
|
|
|
D: Deserializer<'de>,
|
|
|
|
|
{
|
|
|
|
|
if !deserializer.is_human_readable() {
|
|
|
|
|
// bincode, will have already been serialized as bool
|
|
|
|
|
return Ok(Deserialize::deserialize(deserializer)?);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Deserialize the JSON value using Serde's Value type
|
|
|
|
|
let value: Value = Deserialize::deserialize(deserializer)?;
|
|
|
|
|
|
|
|
|
@ -58,6 +68,11 @@ pub fn lang_default_eng<'de, D>(deserializer: D) -> Result<LanguageCode, D::Erro
|
|
|
|
|
where
|
|
|
|
|
D: Deserializer<'de>,
|
|
|
|
|
{
|
|
|
|
|
if !deserializer.is_human_readable() {
|
|
|
|
|
// bincode, will have already been serialized as LanguageCode
|
|
|
|
|
return Ok(Deserialize::deserialize(deserializer)?);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
lang_option(deserializer)
|
|
|
|
|
.transpose()
|
|
|
|
|
.unwrap_or(Ok(LanguageCode::Eng))
|
|
|
|
@ -67,6 +82,11 @@ pub fn lang_option<'de, D>(deserializer: D) -> Result<Option<LanguageCode>, D::E
|
|
|
|
|
where
|
|
|
|
|
D: Deserializer<'de>,
|
|
|
|
|
{
|
|
|
|
|
if !deserializer.is_human_readable() {
|
|
|
|
|
// bincode, will have already been serialized as Option<LanguageCode>
|
|
|
|
|
return Ok(Deserialize::deserialize(deserializer)?);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Option::deserialize(deserializer)?
|
|
|
|
|
.map(|str: String| parse_language_code(&str))
|
|
|
|
|
.transpose()
|
|
|
|
@ -77,6 +97,11 @@ pub fn err_if_not_blank<'de, D>(deserializer: D) -> Result<serde::de::IgnoredAny
|
|
|
|
|
where
|
|
|
|
|
D: Deserializer<'de>,
|
|
|
|
|
{
|
|
|
|
|
if !deserializer.is_human_readable() {
|
|
|
|
|
// bincode, will have already been "serialized" as serde::de::IgnoredAny
|
|
|
|
|
return Ok(serde::de::IgnoredAny);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let value = serde_json::Value::deserialize(deserializer)?;
|
|
|
|
|
if value.is_null() || value == "" {
|
|
|
|
|
Ok(serde::de::IgnoredAny)
|
|
|
|
|