Compare commits

...

2 commits
main ... 0.3

Author SHA1 Message Date
Felix Ableitner
35bf29ae73 Version 0.3.5 2023-02-05 01:02:16 +09:00
Felix Ableitner
d933b8aeb4 Fix deserialize_skip_error function
https://github.com/serde-rs/serde/issues/1726#issuecomment-577425541
2023-02-05 01:01:55 +09:00
3 changed files with 24 additions and 7 deletions

2
Cargo.lock generated
View file

@ -4,7 +4,7 @@ version = 3
[[package]]
name = "activitypub_federation"
version = "0.3.3"
version = "0.3.4"
dependencies = [
"activitystreams-kinds",
"actix-rt",

View file

@ -1,6 +1,6 @@
[package]
name = "activitypub_federation"
version = "0.3.4"
version = "0.3.5"
edition = "2021"
description = "High-level Activitypub framework"
license = "AGPL-3.0"

View file

@ -58,9 +58,26 @@ where
T: Deserialize<'de> + Default,
D: Deserializer<'de>,
{
let result = Deserialize::deserialize(deserializer);
Ok(match result {
Ok(o) => o,
Err(_) => Default::default(),
})
let value = serde_json::Value::deserialize(deserializer)?;
let inner = T::deserialize(value).unwrap_or_default();
Ok(inner)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_deserialize_skip_error() {
#[derive(Debug, Deserialize)]
pub struct MyData {
#[serde(deserialize_with = "deserialize_skip_error")]
pub data: Option<String>,
}
// data has type object
let _: MyData = serde_json::from_str(r#"{ "data": {} }"#).unwrap();
// data has type array
let _: MyData = serde_json::from_str(r#"{"data": []}"#).unwrap();
}
}