mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-06-14 14:01:02 +00:00
wip
This commit is contained in:
+15
-13
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user