From da68a7b4a1377acf6fa7803957ad1e7bf5427f28 Mon Sep 17 00:00:00 2001 From: Luca Spinazzola Date: Mon, 9 Oct 2023 03:04:58 -0400 Subject: [PATCH 1/3] test deserialize_bytes --- src/de/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/de/mod.rs b/src/de/mod.rs index 1919cfcd..a6ce8c78 100644 --- a/src/de/mod.rs +++ b/src/de/mod.rs @@ -445,11 +445,11 @@ impl<'a, 'de> de::Deserializer<'de> for &'a mut Deserializer<'de> { } /// Unsupported - fn deserialize_bytes(self, _visitor: V) -> Result + fn deserialize_bytes(self, visitor: V) -> Result where V: Visitor<'de>, { - unreachable!() + visitor.visit_bytes(&self.slice[self.index..]) } /// Unsupported From d2e9ba44c70bec6d8256d77c99691b45e388a583 Mon Sep 17 00:00:00 2001 From: Luca Spinazzola Date: Mon, 9 Oct 2023 04:25:48 -0400 Subject: [PATCH 2/3] set index to slice length when calling deserialize_bytes --- src/de/mod.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/de/mod.rs b/src/de/mod.rs index a6ce8c78..c9a63277 100644 --- a/src/de/mod.rs +++ b/src/de/mod.rs @@ -449,7 +449,8 @@ impl<'a, 'de> de::Deserializer<'de> for &'a mut Deserializer<'de> { where V: Visitor<'de>, { - visitor.visit_bytes(&self.slice[self.index..]) + self.index = self.slice.len(); + visitor.visit_bytes(&self.slice) } /// Unsupported From 2b88a1876dbaa7a5a4d9df7c395ee645b9e3ec4b Mon Sep 17 00:00:00 2001 From: Luca Spinazzola Date: Mon, 9 Oct 2023 16:32:53 -0400 Subject: [PATCH 3/3] implement deserialize_byte_buf as well --- src/de/mod.rs | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/de/mod.rs b/src/de/mod.rs index c9a63277..3b8c6bac 100644 --- a/src/de/mod.rs +++ b/src/de/mod.rs @@ -444,21 +444,20 @@ impl<'a, 'de> de::Deserializer<'de> for &'a mut Deserializer<'de> { } } - /// Unsupported fn deserialize_bytes(self, visitor: V) -> Result - where - V: Visitor<'de>, + where + V: Visitor<'de>, { self.index = self.slice.len(); - visitor.visit_bytes(&self.slice) + visitor.visit_bytes(self.slice) } - /// Unsupported - fn deserialize_byte_buf(self, _visitor: V) -> Result - where - V: Visitor<'de>, + fn deserialize_byte_buf(self, visitor: V) -> Result + where + V: Visitor<'de>, { - unreachable!() + self.index = self.slice.len(); + visitor.visit_byte_buf(self.slice.to_vec()) } fn deserialize_option(self, visitor: V) -> Result