Update to serde 0.5.0

This commit is contained in:
Erick Tryzelaar 2015-07-29 13:13:21 -07:00
parent 0d6b8a48b6
commit 8ec54e562a
2 changed files with 48 additions and 105 deletions

View File

@ -346,13 +346,18 @@ impl<'a, R: Read> serde::Deserializer for Deserializer<'a, R> {
}
}
fn visit_enum<V>(&mut self, _enum: &str, mut visitor: V) -> Result<V::Value, Self::Error>
fn visit_enum<V>(&mut self,
_enum: &'static str,
_variants: &'static [&'static str],
mut visitor: V) -> Result<V::Value, Self::Error>
where V: serde::de::EnumVisitor,
{
visitor.visit(self)
}
fn visit_tuple<V>(&mut self, mut visitor: V) -> DeserializeResult<V::Value>
fn visit_tuple<V>(&mut self,
_len: usize,
mut visitor: V) -> DeserializeResult<V::Value>
where V: serde::de::Visitor,
{
struct TupleVisitor<'a, 'b: 'a, R: Read + 'b>(&'a mut Deserializer<'b, R>);
@ -375,12 +380,6 @@ impl<'a, R: Read> serde::Deserializer for Deserializer<'a, R> {
visitor.visit_seq(TupleVisitor(self))
}
fn visit_named_seq<V>(&mut self, _name: &str, visitor: V) -> DeserializeResult<V::Value>
where V: serde::de::Visitor,
{
self.visit_tuple(visitor)
}
fn visit_option<V>(&mut self, mut visitor: V) -> DeserializeResult<V::Value>
where V: serde::de::Visitor,
{
@ -476,56 +475,13 @@ impl<'a, R: Read> serde::Deserializer for Deserializer<'a, R> {
visitor.visit_map(MapVisitor { deserializer: self, len: len })
}
fn visit_named_map<V>(&mut self,
fn visit_struct<V>(&mut self,
_name: &str,
fields: &'static [&'static str],
mut visitor: V) -> DeserializeResult<V::Value>
visitor: V) -> DeserializeResult<V::Value>
where V: serde::de::Visitor,
{
struct StructVisitor<'a, 'b: 'a, R: Read + 'b> {
deserializer: &'a mut Deserializer<'b, R>,
index: usize,
fields: &'static [&'static str],
}
impl<'a, 'b: 'a, R: Read + 'b> serde::de::MapVisitor for StructVisitor<'a, 'b, R> {
type Error = DeserializeError;
fn visit_key<K>(&mut self) -> Result<Option<K>, Self::Error>
where K: serde::de::Deserialize,
{
if self.index < self.fields.len() {
let mut deserializer = self.index.into_deserializer();
self.index += 1;
let key = try!(serde::Deserialize::deserialize(&mut deserializer));
Ok(Some(key))
} else {
Ok(None)
}
}
fn visit_value<V>(&mut self) -> Result<V, Self::Error>
where V: serde::de::Deserialize,
{
let value = try!(serde::Deserialize::deserialize(self.deserializer));
Ok(value)
}
fn end(&mut self) -> Result<(), Self::Error> {
if self.index < self.fields.len() {
Err(serde::de::Error::missing_field_error(self.fields[self.index]))
} else {
Ok(())
}
}
}
visitor.visit_map(StructVisitor {
deserializer: self,
index: 0,
fields: fields,
})
self.visit_tuple(fields.len(), visitor)
}
}
@ -544,20 +500,21 @@ impl<'a, R: Read> serde::de::VariantVisitor for Deserializer<'a, R> {
Ok(())
}
fn visit_seq<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
fn visit_tuple<V>(&mut self,
len: usize,
visitor: V) -> Result<V::Value, Self::Error>
where V: serde::de::Visitor,
{
serde::de::Deserializer::visit_named_seq(self, "", visitor)
serde::de::Deserializer::visit_tuple(self, len, visitor)
}
fn visit_map<V>(&mut self,
fn visit_struct<V>(&mut self,
fields: &'static [&'static str],
visitor: V) -> Result<V::Value, Self::Error>
where V: serde::de::Visitor,
{
serde::de::Deserializer::visit_named_map(self, "", fields, visitor)
serde::de::Deserializer::visit_tuple(self, fields.len(), visitor)
}
}
pub fn from_reader<R, T>(reader: &mut R, size_limit: SizeLimit) -> DeserializeResult<T>

View File

@ -174,14 +174,6 @@ impl<'a, W: Write> serde::Serializer for Serializer<'a, W> {
Ok(())
}
fn visit_named_seq<V>(&mut self, _name: &str, mut visitor: V) -> SerializeResult<()>
where V: serde::ser::SeqVisitor,
{
while let Some(()) = try!(visitor.visit(self)) { }
Ok(())
}
fn visit_seq_elt<V>(&mut self, value: V) -> SerializeResult<()>
where V: serde::Serialize,
{
@ -211,7 +203,7 @@ impl<'a, W: Write> serde::Serializer for Serializer<'a, W> {
value.serialize(self)
}
fn visit_named_map<V>(&mut self, _name: &str, mut visitor: V) -> SerializeResult<()>
fn visit_struct<V>(&mut self, _name: &str, mut visitor: V) -> SerializeResult<()>
where V: serde::ser::MapVisitor,
{
while let Some(()) = try!(visitor.visit(self)) { }
@ -219,21 +211,21 @@ impl<'a, W: Write> serde::Serializer for Serializer<'a, W> {
Ok(())
}
fn visit_named_map_elt<K, V>(&mut self, _key: K, value: V) -> SerializeResult<()>
fn visit_struct_elt<K, V>(&mut self, _key: K, value: V) -> SerializeResult<()>
where K: serde::Serialize,
V: serde::Serialize,
{
value.serialize(self)
}
fn visit_enum_unit(&mut self,
fn visit_unit_variant(&mut self,
_name: &str,
variant_index: usize,
_variant: &str) -> SerializeResult<()> {
self.add_enum_tag(variant_index)
}
fn visit_enum_seq<V>(&mut self,
fn visit_tuple_variant<V>(&mut self,
_name: &str,
variant_index: usize,
_variant: &str,
@ -247,7 +239,7 @@ impl<'a, W: Write> serde::Serializer for Serializer<'a, W> {
Ok(())
}
fn visit_enum_map<V>(&mut self,
fn visit_struct_variant<V>(&mut self,
_name: &str,
variant_index: usize,
_variant: &str,
@ -386,12 +378,6 @@ impl serde::Serializer for SizeChecker {
Ok(())
}
fn visit_named_seq<V>(&mut self, _name: &str, visitor: V) -> SerializeResult<()>
where V: serde::ser::SeqVisitor,
{
self.visit_tuple(visitor)
}
fn visit_seq_elt<V>(&mut self, value: V) -> SerializeResult<()>
where V: serde::Serialize,
{
@ -421,7 +407,7 @@ impl serde::Serializer for SizeChecker {
value.serialize(self)
}
fn visit_named_map<V>(&mut self, _name: &str, mut visitor: V) -> SerializeResult<()>
fn visit_struct<V>(&mut self, _name: &str, mut visitor: V) -> SerializeResult<()>
where V: serde::ser::MapVisitor,
{
while let Some(()) = try!(visitor.visit(self)) { }
@ -429,21 +415,21 @@ impl serde::Serializer for SizeChecker {
Ok(())
}
fn visit_named_map_elt<K, V>(&mut self, _key: K, value: V) -> SerializeResult<()>
fn visit_struct_elt<K, V>(&mut self, _key: K, value: V) -> SerializeResult<()>
where K: serde::Serialize,
V: serde::Serialize,
{
value.serialize(self)
}
fn visit_enum_unit(&mut self,
fn visit_unit_variant(&mut self,
_name: &str,
variant_index: usize,
_variant: &str) -> SerializeResult<()> {
self.add_enum_tag(variant_index)
}
fn visit_enum_seq<V>(&mut self,
fn visit_tuple_variant<V>(&mut self,
_name: &str,
variant_index: usize,
_variant: &str,
@ -457,7 +443,7 @@ impl serde::Serializer for SizeChecker {
Ok(())
}
fn visit_enum_map<V>(&mut self,
fn visit_struct_variant<V>(&mut self,
_name: &str,
variant_index: usize,
_variant: &str,