Compare commits
2 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
35bf29ae73 | ||
|
|
d933b8aeb4 |
3 changed files with 24 additions and 7 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
|
@ -4,7 +4,7 @@ version = 3
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "activitypub_federation"
|
name = "activitypub_federation"
|
||||||
version = "0.3.3"
|
version = "0.3.4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"activitystreams-kinds",
|
"activitystreams-kinds",
|
||||||
"actix-rt",
|
"actix-rt",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "activitypub_federation"
|
name = "activitypub_federation"
|
||||||
version = "0.3.4"
|
version = "0.3.5"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
description = "High-level Activitypub framework"
|
description = "High-level Activitypub framework"
|
||||||
license = "AGPL-3.0"
|
license = "AGPL-3.0"
|
||||||
|
|
|
||||||
|
|
@ -58,9 +58,26 @@ where
|
||||||
T: Deserialize<'de> + Default,
|
T: Deserialize<'de> + Default,
|
||||||
D: Deserializer<'de>,
|
D: Deserializer<'de>,
|
||||||
{
|
{
|
||||||
let result = Deserialize::deserialize(deserializer);
|
let value = serde_json::Value::deserialize(deserializer)?;
|
||||||
Ok(match result {
|
let inner = T::deserialize(value).unwrap_or_default();
|
||||||
Ok(o) => o,
|
Ok(inner)
|
||||||
Err(_) => Default::default(),
|
}
|
||||||
})
|
|
||||||
|
#[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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue