From d51f470eb91a027e4a54c1c27e0658be5840da28 Mon Sep 17 00:00:00 2001 From: Matt Bilker Date: Tue, 10 Jul 2018 15:51:16 +0000 Subject: [PATCH] de: support special tuple struct deserialization --- src/de/mod.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/de/mod.rs b/src/de/mod.rs index 15e6e1b..2c4f03d 100644 --- a/src/de/mod.rs +++ b/src/de/mod.rs @@ -171,6 +171,10 @@ macro_rules! implement_type { impl<'de, 'a> de::Deserializer<'de> for &'a mut Deserializer<'de> { type Error = Error; + fn is_human_readable(&self) -> bool { + false + } + fn deserialize_any(self, _visitor: V) -> Result where V: Visitor<'de> { @@ -271,11 +275,17 @@ impl<'de, 'a> de::Deserializer<'de> for &'a mut Deserializer<'de> { self.deserialize_seq(visitor) } - fn deserialize_tuple_struct(self, name: &'static str, len: usize, _visitor: V) -> Result + fn deserialize_tuple_struct(self, name: &'static str, len: usize, visitor: V) -> Result where V: Visitor<'de> { trace!("Deserializer::deserialize_tuple_struct(name: {:?}, len: {})", name, len); - unimplemented!(); + + self.read_mode = ReadMode::Array; + let value = visitor.visit_seq(Seq::new(self, len))?; + self.read_mode = ReadMode::Single; + self.data_buf.realign_reads(None)?; + + Ok(value) } fn deserialize_map(self, _visitor: V) -> Result