From 5bfaa7aa9f38806436e15928917cbd841a61e0f2 Mon Sep 17 00:00:00 2001
From: Kenaniah Cerny <kenaniah@users.noreply.github.com>
Date: Wed, 9 Jun 2021 12:20:57 -0700
Subject: fixes #45 - encoding not working correctly on maps (#47)

---
 src/ser.rs | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

(limited to 'src')

diff --git a/src/ser.rs b/src/ser.rs
index dcd58c2..654c889 100644
--- a/src/ser.rs
+++ b/src/ser.rs
@@ -122,13 +122,15 @@ fn replace_space(input: &str) -> Cow<str> {
 
 impl<'a, W: 'a + Write> QsSerializer<'a, W> {
     fn extend_key(&mut self, newkey: &str) {
-        let newkey = percent_encode(newkey.as_bytes(), QS_ENCODE_SET).collect::<Cow<str>>();
+        let newkey = percent_encode(newkey.as_bytes(), QS_ENCODE_SET)
+            .map(replace_space)
+            .collect::<String>();
         let key = if let Some(ref key) = self.key {
             format!("{}[{}]", key, newkey).into()
         } else {
             newkey.to_owned()
         };
-        self.key = Some(key)
+        self.key = Some(Cow::Owned(key))
     }
 
     fn write_value(&mut self, value: &[u8]) -> Result<()> {
-- 
cgit v1.2.3