diff --git a/ruma-serde/CHANGELOG.md b/ruma-serde/CHANGELOG.md index f5bb81da..2e0cedcf 100644 --- a/ruma-serde/CHANGELOG.md +++ b/ruma-serde/CHANGELOG.md @@ -1,3 +1,9 @@ +# 0.3.1 + +Bug fixes: + +* Fix an edge case in query parameter deserialization + # 0.3.0 Breaking changes: diff --git a/ruma-serde/src/urlencoded/de/val_or_vec.rs b/ruma-serde/src/urlencoded/de/val_or_vec.rs index eda188b8..825c3538 100644 --- a/ruma-serde/src/urlencoded/de/val_or_vec.rs +++ b/ruma-serde/src/urlencoded/de/val_or_vec.rs @@ -194,6 +194,13 @@ where self.deserialize_val(move |val| val.deserialize_newtype_struct(name, visitor)) } + fn deserialize_ignored_any(self, visitor: V) -> Result + where + V: de::Visitor<'de>, + { + visitor.visit_unit() + } + forward_to_part! { deserialize_bool, deserialize_char, @@ -214,7 +221,6 @@ where deserialize_f64, deserialize_option, deserialize_identifier, - deserialize_ignored_any, deserialize_map, } } diff --git a/ruma-serde/tests/url_deserialize.rs b/ruma-serde/tests/url_deserialize.rs index e996e299..f106982a 100644 --- a/ruma-serde/tests/url_deserialize.rs +++ b/ruma-serde/tests/url_deserialize.rs @@ -89,6 +89,7 @@ fn deserialize_struct() { let de = Params { a: 10, b: "Hello", c: None }; assert_eq!(urlencoded::from_str("a=10&b=Hello"), Ok(de)); assert_eq!(urlencoded::from_str("b=Hello&a=10"), Ok(de)); + assert_eq!(urlencoded::from_str("a=10&b=Hello&d=1&d=2"), Ok(de)); } #[test]