Skip to content

Commit 92c4fc5

Browse files
authored
Merge pull request #87 from jchlapinski/master
deps upgrade serde: 1.*, heapsize: 0.*
2 parents df66adc + 35589c5 commit 92c4fc5

File tree

3 files changed

+25
-28
lines changed

3 files changed

+25
-28
lines changed

Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@ heapsize_impl = ["heapsize"]
2222

2323
[dependencies]
2424
clippy = { version = "0.*", optional = true }
25-
serde = { version = "0.9", optional = true }
26-
serde_test = { version = "0.9", optional = true }
27-
heapsize = { version = "0.3.9", optional = true }
25+
serde = { version = "1.0", optional = true }
26+
serde_test = { version = "1.0", optional = true }
27+
heapsize = { version = "0.4", optional = true }

src/serde.rs

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,4 @@
1-
//! An optional implementation of serialization/deserialization. Reference
2-
//! implementations used:
3-
//!
4-
//! - [Serialize][1].
5-
//! - [Deserialize][2].
6-
//!
7-
//! [1]: https://github.com/serde-rs/serde/blob/97856462467db2e90cf368e407c7ebcc726a01a9/serde/src/ser/impls.rs#L601-L611
8-
//! [2]: https://github.com/serde-rs/serde/blob/97856462467db2e90cf368e407c7ebcc726a01a9/serde/src/de/impls.rs#L694-L746
1+
//! An optional implementation of serialization/deserialization.
92
103
extern crate serde;
114

@@ -17,7 +10,7 @@ use super::LinkedHashMap;
1710

1811
use self::serde::{Serialize, Serializer, Deserialize, Deserializer};
1912
use self::serde::ser::SerializeMap;
20-
use self::serde::de::{Visitor, MapVisitor, Error};
13+
use self::serde::de::{Visitor, MapAccess, Error};
2114

2215
impl<K, V, S> Serialize for LinkedHashMap<K, V, S>
2316
where K: Serialize + Eq + Hash,
@@ -37,6 +30,7 @@ impl<K, V, S> Serialize for LinkedHashMap<K, V, S>
3730
}
3831
}
3932

33+
#[derive(Debug)]
4034
/// `serde::de::Visitor` for a linked hash map.
4135
pub struct LinkedHashMapVisitor<K, V> {
4236
marker: PhantomData<LinkedHashMap<K, V>>,
@@ -51,9 +45,15 @@ impl<K, V> LinkedHashMapVisitor<K, V> {
5145
}
5246
}
5347

54-
impl<K, V> Visitor for LinkedHashMapVisitor<K, V>
55-
where K: Deserialize + Eq + Hash,
56-
V: Deserialize,
48+
impl<K, V> Default for LinkedHashMapVisitor<K, V> {
49+
fn default() -> Self {
50+
LinkedHashMapVisitor::new()
51+
}
52+
}
53+
54+
impl<'de, K, V> Visitor<'de> for LinkedHashMapVisitor<K, V>
55+
where K: Deserialize<'de> + Eq + Hash,
56+
V: Deserialize<'de>,
5757
{
5858
type Value = LinkedHashMap<K, V>;
5959

@@ -69,25 +69,25 @@ impl<K, V> Visitor for LinkedHashMapVisitor<K, V>
6969
}
7070

7171
#[inline]
72-
fn visit_map<Visitor>(self, mut visitor: Visitor) -> Result<Self::Value, Visitor::Error>
73-
where Visitor: MapVisitor,
72+
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
73+
where M: MapAccess<'de>,
7474
{
75-
let mut values = LinkedHashMap::with_capacity(visitor.size_hint().0);
75+
let mut values = LinkedHashMap::with_capacity(map.size_hint().unwrap_or(0));
7676

77-
while let Some((key, value)) = try!(visitor.visit()) {
77+
while let Some((key, value)) = map.next_entry()? {
7878
values.insert(key, value);
7979
}
8080

8181
Ok(values)
8282
}
8383
}
8484

85-
impl<K, V> Deserialize for LinkedHashMap<K, V>
86-
where K: Deserialize + Eq + Hash,
87-
V: Deserialize,
85+
impl<'de, K, V> Deserialize<'de> for LinkedHashMap<K, V>
86+
where K: Deserialize<'de> + Eq + Hash,
87+
V: Deserialize<'de>,
8888
{
8989
fn deserialize<D>(deserializer: D) -> Result<LinkedHashMap<K, V>, D::Error>
90-
where D: Deserializer,
90+
where D: Deserializer<'de>,
9191
{
9292
deserializer.deserialize_map(LinkedHashMapVisitor::new())
9393
}

tests/serde.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ fn test_ser_de_empty() {
1111
let map = LinkedHashMap::<char, u32>::new();
1212

1313
assert_tokens(&map, &[
14-
Token::MapStart(Some(0)),
14+
Token::Map { len: Some(0) },
1515
Token::MapEnd,
1616
]);
1717
}
@@ -24,16 +24,13 @@ fn test_ser_de() {
2424
map.insert('c', 30);
2525

2626
assert_tokens(&map, &[
27-
Token::MapStart(Some(3)),
28-
Token::MapSep,
27+
Token::Map { len: Some(3) },
2928
Token::Char('b'),
3029
Token::I32(20),
3130

32-
Token::MapSep,
3331
Token::Char('a'),
3432
Token::I32(10),
3533

36-
Token::MapSep,
3734
Token::Char('c'),
3835
Token::I32(30),
3936
Token::MapEnd,

0 commit comments

Comments
 (0)