diff options
author | Sam Scott <sam.scott89@gmail.com> | 2017-05-22 23:09:29 +0100 |
---|---|---|
committer | Sam Scott <sam.scott89@gmail.com> | 2017-05-22 23:09:29 +0100 |
commit | 071affd963ed88bfdcede6aa7b20626d3cf0f368 (patch) | |
tree | 8b598e71de34bbd138117904660171024d1f3330 /src/de | |
parent | fa0c28ec545fea48c31d38989fdf8e35afc10f83 (diff) |
Revert "Stop LevelDeserializer from coercing values too early."
This reverts commit 6429b975c6cbcf5d7e0c2b1d02026f8d46b5c50f.
Diffstat (limited to 'src/de')
-rw-r--r-- | src/de/mod.rs | 41 |
1 files changed, 7 insertions, 34 deletions
diff --git a/src/de/mod.rs b/src/de/mod.rs index 83a15be..cf32c5e 100644 --- a/src/de/mod.rs +++ b/src/de/mod.rs @@ -479,9 +479,10 @@ impl<'de> de::Deserializer<'de> for LevelDeserializer { }, Level::Sequence(_) => { self.deserialize_seq(visitor) + }, Level::Flat(x) => { - ParsableStringDeserializer(x).deserialize_any(visitor) + visitor.visit_string(x) }, Level::Invalid(e) => { Err(de::Error::custom(e)) @@ -566,17 +567,7 @@ impl<'de> de::Deserializer<'de> for LevelDeserializer { ) -> Result<V::Value> where V: de::Visitor<'de> { - match self.0 { - Level::Nested(_) => { - self.deserialize_map(visitor) - }, - Level::Sequence(_) | Level::Flat(_) => { - self.deserialize_seq(visitor) - }, - Level::Invalid(e) => { - Err(de::Error::custom(e)) - } - } + self.deserialize_seq(visitor) } fn deserialize_tuple<V>( @@ -586,17 +577,7 @@ impl<'de> de::Deserializer<'de> for LevelDeserializer { ) -> Result<V::Value> where V: de::Visitor<'de> { - match self.0 { - Level::Nested(_) => { - self.deserialize_map(visitor) - }, - Level::Sequence(_) | Level::Flat(_) => { - self.deserialize_seq(visitor) - }, - Level::Invalid(e) => { - Err(de::Error::custom(e)) - } - } + self.deserialize_seq(visitor) } fn deserialize_tuple_struct<V>( self, @@ -606,17 +587,8 @@ impl<'de> de::Deserializer<'de> for LevelDeserializer { ) -> Result<V::Value> where V: de::Visitor<'de> { - match self.0 { - Level::Nested(_) => { - self.deserialize_map(visitor) - }, - Level::Sequence(_) | Level::Flat(_) => { - self.deserialize_seq(visitor) - }, - Level::Invalid(e) => { - Err(de::Error::custom(e)) - } - } } + self.deserialize_seq(visitor) + } fn deserialize_bytes<V>(self, visitor: V) -> Result<V::Value> where V: de::Visitor<'de> @@ -706,6 +678,7 @@ impl<'de> de::Deserializer<'de> for ParsableStringDeserializer { self.0.into_deserializer().deserialize_any(visitor) } + forward_to_deserialize_any! { map struct |