generated from ElnuDev/rust-project
Get deserialization from bincode working
This commit is contained in:
parent
9cdf67e90d
commit
3a8d77ff1f
1 changed files with 25 additions and 0 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue