From 98f0113592da64dbf8425b845194469ec3d5c0d8 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Tue, 16 Apr 2019 11:26:25 +0200 Subject: [PATCH] Don't use CowStrDeserializer (fixes #53) --- src/de.rs | 5 ++++- tests/test_deserialize.rs | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/de.rs b/src/de.rs index bee94a92..3558f3e2 100644 --- a/src/de.rs +++ b/src/de.rs @@ -194,7 +194,10 @@ impl<'de> de::Deserializer<'de> for Part<'de> { where V: de::Visitor<'de>, { - self.0.into_deserializer().deserialize_any(visitor) + match self.0 { + Cow::Borrowed(value) => visitor.visit_borrowed_str(value), + Cow::Owned(value) => visitor.visit_string(value), + } } fn deserialize_option(self, visitor: V) -> Result diff --git a/tests/test_deserialize.rs b/tests/test_deserialize.rs index a9ae9f0a..69105995 100644 --- a/tests/test_deserialize.rs +++ b/tests/test_deserialize.rs @@ -29,6 +29,13 @@ fn deserialize_str() { assert_eq!(serde_urlencoded::from_str("first=23&last=42"), Ok(result)); } +#[test] +fn deserialize_borrowed_str() { + let result = vec![("first", 23), ("last", 42)]; + + assert_eq!(serde_urlencoded::from_str("first=23&last=42"), Ok(result)); +} + #[test] fn deserialize_reader() { let result = vec![("first".to_owned(), 23), ("last".to_owned(), 42)];