This commit is contained in:
Erick Tryzelaar
2015-01-17 20:56:06 -08:00
parent 4efca7e56a
commit 75d5f27f8a
+15 -13
View File
@@ -1,5 +1,6 @@
use std::collections::hash_map::Hasher;
use std::collections::{HashMap, BTreeMap}; use std::collections::{HashMap, BTreeMap};
use std::hash::{Hash, Hasher}; use std::hash::Hash;
use std::num::FromPrimitive; use std::num::FromPrimitive;
use std::str; use std::str;
@@ -594,19 +595,18 @@ tuple_impls! {
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
struct HashMapVisitor<K, V, H>; struct HashMapVisitor<K, V>;
impl<K, V, H> Visitor for HashMapVisitor<K, V, H> impl<K, V> Visitor for HashMapVisitor<K, V>
where K: Deserialize + Eq + Hash<H>, where K: Deserialize + Eq + Hash<Hasher>,
V: Deserialize, V: Deserialize,
H: Hasher,
{ {
type Value = HashMap<K, V>; type Value = HashMap<K, V>;
#[inline] #[inline]
fn visit_map< fn visit_map<
Visitor: MapVisitor, V_: MapVisitor,
>(&mut self, mut visitor: Visitor) -> Result<HashMap<K, V>, Visitor::Error> { >(&mut self, mut visitor: V_) -> Result<HashMap<K, V>, V_::Error> {
let (len, _) = visitor.size_hint(); let (len, _) = visitor.size_hint();
let mut values = HashMap::with_capacity(len); let mut values = HashMap::with_capacity(len);
@@ -618,17 +618,19 @@ impl<K, V, H> Visitor for HashMapVisitor<K, V, H>
} }
} }
impl< impl<K, V> Deserialize for HashMap<K, V>
K: Deserialize + Eq + Hash, where K: Deserialize + Eq + Hash<Hasher>,
V: Deserialize, V: Deserialize,
> Deserialize for HashMap<K, V> { {
fn deserialize< fn deserialize<
S: Deserializer, S_: Deserializer,
>(state: &mut S) -> Result<HashMap<K, V>, S::Error> { >(state: &mut S_) -> Result<HashMap<K, V>, S_::Error> {
state.visit(&mut HashMapVisitor) state.visit(&mut HashMapVisitor)
} }
} }
///////////////////////////////////////////////////////////////////////////////
struct BTreeMapVisitor<K, V>; struct BTreeMapVisitor<K, V>;
impl<K, V> Visitor for BTreeMapVisitor<K, V> impl<K, V> Visitor for BTreeMapVisitor<K, V>