From c8d0193396a57a55e5d0e8aa75770128c4e2c232 Mon Sep 17 00:00:00 2001 From: Jimmy Cuadra Date: Tue, 31 Jan 2017 01:20:31 -0800 Subject: [PATCH 1/3] Update to Serde 0.9. --- Cargo.toml | 4 ++-- src/serde.rs | 24 ++++++++++++++---------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index a58d99b..ddd5003 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,5 +21,5 @@ serde_impl = ["serde", "serde_test"] [dependencies] clippy = { version = "0.*", optional = true } -serde = { version = "^0.8", optional = true } -serde_test = { version = "^0.8", optional = true } +serde = { version = "0.9", optional = true } +serde_test = { version = "0.9", optional = true } diff --git a/src/serde.rs b/src/serde.rs index 6ae6612..d99672e 100644 --- a/src/serde.rs +++ b/src/serde.rs @@ -9,12 +9,14 @@ extern crate serde; +use std::fmt::{Formatter, Result as FmtResult}; use std::marker::PhantomData; use std::hash::{BuildHasher, Hash}; use super::LinkedHashMap; use self::serde::{Serialize, Serializer, Deserialize, Deserializer}; +use self::serde::ser::SerializeMap; use self::serde::de::{Visitor, MapVisitor, Error}; impl Serialize for LinkedHashMap @@ -23,15 +25,15 @@ impl Serialize for LinkedHashMap S: BuildHasher { #[inline] - fn serialize(&self, serializer: &mut T) -> Result<(), T::Error> + fn serialize(&self, serializer:T) -> Result where T: Serializer, { - let mut state = try!(serializer.serialize_map(Some(self.len()))); + let mut map_serializer = try!(serializer.serialize_map(Some(self.len()))); for (k, v) in self { - try!(serializer.serialize_map_key(&mut state, k)); - try!(serializer.serialize_map_value(&mut state, v)); + try!(map_serializer.serialize_key(k)); + try!(map_serializer.serialize_value(v)); } - serializer.serialize_map_end(state) + map_serializer.end() } } @@ -55,15 +57,19 @@ impl Visitor for LinkedHashMapVisitor { type Value = LinkedHashMap; + fn expecting(&self, formatter: &mut Formatter) -> FmtResult { + write!(formatter, "linked hash map") + } + #[inline] - fn visit_unit(&mut self) -> Result + fn visit_unit(self) -> Result where E: Error, { Ok(LinkedHashMap::new()) } #[inline] - fn visit_map(&mut self, mut visitor: Visitor) -> Result + fn visit_map(self, mut visitor: Visitor) -> Result where Visitor: MapVisitor, { let mut values = LinkedHashMap::with_capacity(visitor.size_hint().0); @@ -72,8 +78,6 @@ impl Visitor for LinkedHashMapVisitor values.insert(key, value); } - try!(visitor.end()); - Ok(values) } } @@ -82,7 +86,7 @@ impl Deserialize for LinkedHashMap where K: Deserialize + Eq + Hash, V: Deserialize, { - fn deserialize(deserializer: &mut D) -> Result, D::Error> + fn deserialize(deserializer: D) -> Result, D::Error> where D: Deserializer, { deserializer.deserialize_map(LinkedHashMapVisitor::new()) From 61bb30bedbfc810b398cbf4e25bb1d33a99c4973 Mon Sep 17 00:00:00 2001 From: Jimmy Cuadra Date: Fri, 3 Feb 2017 02:12:57 -0800 Subject: [PATCH 2/3] Remove redundant method impl reported by clippy. --- src/lib.rs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index d0f1078..2704564 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -682,10 +682,6 @@ impl PartialEq for LinkedHashMap bool { self.len() == other.len() && self.iter().eq(other) } - - fn ne(&self, other: &Self) -> bool { - self.len() != other.len() || self.iter().ne(other) - } } impl Eq for LinkedHashMap {} From 649b4af2306552df84cba69445e6f3330fb4b59f Mon Sep 17 00:00:00 2001 From: Jimmy Cuadra Date: Fri, 3 Feb 2017 10:20:21 -0800 Subject: [PATCH 3/3] Use a more generic description in `expecting`. --- src/serde.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/serde.rs b/src/serde.rs index d99672e..b449f14 100644 --- a/src/serde.rs +++ b/src/serde.rs @@ -58,7 +58,7 @@ impl Visitor for LinkedHashMapVisitor type Value = LinkedHashMap; fn expecting(&self, formatter: &mut Formatter) -> FmtResult { - write!(formatter, "linked hash map") + write!(formatter, "a map") } #[inline]