diff --git a/serde/src/de/content.rs b/serde/src/de/content.rs index 4e59d36c..069bba38 100644 --- a/serde/src/de/content.rs +++ b/serde/src/de/content.rs @@ -22,7 +22,6 @@ use alloc::boxed::Box; use de::{self, Deserialize, DeserializeSeed, Deserializer, Visitor, SeqVisitor, MapVisitor, EnumVisitor, Unexpected}; -use de::value::ValueDeserializer; /// Used from generated code to buffer the contents of the Deserializer when /// deserializing untagged enums and internally tagged enums. @@ -685,7 +684,7 @@ impl ContentDeserializer { } struct EnumDeserializer where E: de::Error { - variant: String, + variant: Content, value: Option, err: PhantomData, } @@ -695,11 +694,10 @@ impl de::EnumVisitor for EnumDeserializer where E: de::Error { type Variant = VariantDeserializer; fn visit_variant_seed(self, seed: V) -> Result<(V::Value, VariantDeserializer), Self::Error> - where V: de::DeserializeSeed + where V: de::DeserializeSeed, { - let variant = self.variant.into_deserializer(); let visitor = VariantDeserializer { value: self.value, err: PhantomData, }; - seed.deserialize(variant).map(|v| (v, visitor)) + seed.deserialize(ContentDeserializer::new(self.variant)).map(|v| (v, visitor)) } } @@ -820,13 +818,13 @@ impl de::SeqVisitor for SeqDeserializer where E: de::Error { } struct MapDeserializer where E: de::Error { - iter: as IntoIterator>::IntoIter, + iter: as IntoIterator>::IntoIter, value: Option, err: PhantomData, } impl MapDeserializer where E: de::Error { - fn new(map: Vec<(String, Content)>) -> Self { + fn new(map: Vec<(Content, Content)>) -> Self { MapDeserializer { iter: map.into_iter(), value: None, @@ -844,7 +842,7 @@ impl de::MapVisitor for MapDeserializer where E: de::Error { match self.iter.next() { Some((key, value)) => { self.value = Some(value); - seed.deserialize(ContentDeserializer::new(Content::String(key))).map(Some) + seed.deserialize(ContentDeserializer::new(key)).map(Some) } None => Ok(None), }