Factor out value deserializers

This commit is contained in:
Erick Tryzelaar
2015-03-31 12:56:17 -07:00
parent bfe7a04c4d
commit 54009e0991
4 changed files with 432 additions and 20 deletions
+2 -20
View File
@@ -603,26 +603,8 @@ impl<'a, Iter> de::MapVisitor for MapVisitor<'a, Iter>
fn missing_field<V>(&mut self, _field: &'static str) -> Result<V, Error>
where V: de::Deserialize,
{
// See if the type can deserialize from a unit.
struct UnitDeserializer;
impl de::Deserializer for UnitDeserializer {
type Error = Error;
fn visit<V>(&mut self, mut visitor: V) -> Result<V::Value, Error>
where V: de::Visitor,
{
visitor.visit_unit()
}
fn visit_option<V>(&mut self, mut visitor: V) -> Result<V::Value, Error>
where V: de::Visitor,
{
visitor.visit_none()
}
}
Ok(try!(de::Deserialize::deserialize(&mut UnitDeserializer)))
let mut de = de::value::ValueDeserializer::deserializer(());
Ok(try!(de::Deserialize::deserialize(&mut de)))
}
}