diff --git a/serde/src/private/de.rs b/serde/src/private/de.rs index d092ff1c6..8d2018784 100644 --- a/serde/src/private/de.rs +++ b/serde/src/private/de.rs @@ -1615,9 +1615,7 @@ mod content { V: de::Visitor<'de>, { match self.value { - Some(Content::Seq(v)) => { - de::Deserializer::deserialize_any(SeqDeserializer::new(v.into_iter()), visitor) - } + Some(Content::Seq(v)) => visit_content_seq(v, visitor), Some(other) => Err(de::Error::invalid_type( other.unexpected(), &"tuple variant", @@ -1638,12 +1636,8 @@ mod content { V: de::Visitor<'de>, { match self.value { - Some(Content::Map(v)) => { - de::Deserializer::deserialize_any(MapDeserializer::new(v.into_iter()), visitor) - } - Some(Content::Seq(v)) => { - de::Deserializer::deserialize_any(SeqDeserializer::new(v.into_iter()), visitor) - } + Some(Content::Map(v)) => visit_content_map(v, visitor), + Some(Content::Seq(v)) => visit_content_seq(v, visitor), Some(other) => Err(de::Error::invalid_type( other.unexpected(), &"struct variant",