diff options
author | Sam Scott <sam.scott89@gmail.com> | 2017-02-19 14:01:26 +0000 |
---|---|---|
committer | Sam Scott <sam.scott89@gmail.com> | 2017-02-19 14:01:26 +0000 |
commit | 0d093012ae112026e19db10d6756426ce60adb44 (patch) | |
tree | abff7fb85bceae6488db422ef01775aeefe006ad /src | |
parent | 4a6b46f9222cad61ceb8e9246b4cc33eb4f61f57 (diff) |
Little bit of cleanup.
Diffstat (limited to 'src')
-rw-r--r-- | src/de.rs | 37 |
1 files changed, 7 insertions, 30 deletions
@@ -117,8 +117,8 @@ impl<'a, 'b> de::Deserializer for &'b mut Deserializer<'a> { // _serde::Deserializer::deserialize_struct(deserializer,"A", FIELDS, __Visitor) fn deserialize_struct<V>(self, - name: &'static str, - fields: &'static [&'static str], + _name: &'static str, + _fields: &'static [&'static str], visitor: V) -> Result<V::Value, Self::Error> where V: de::Visitor @@ -157,29 +157,22 @@ impl<'a, 'b> de::Deserializer for &'b mut Deserializer<'a> { } -use std::marker::PhantomData; use serde::de::MapVisitor; use std::iter; -use std::collections::hash_map::{Iter,IntoIter}; +use std::collections::hash_map::IntoIter; #[derive(Debug)] enum Level { Flat(String), Nested(String), } -struct FlatMapVisitor<'a, 'b> - where 'a: 'b +struct FlatMapVisitor { - de: &'b mut Deserializer<'a>, iter: iter::Peekable<iter::Fuse<IntoIter<String, Level>>>, - // iter: iter::Peekable<iter::Fuse<Iter<'c, String, String>>>, - } -use serde::de::value::CowStrDeserializer; -impl<'a, 'b, 'c> FlatMapVisitor<'a, 'b> - where 'a :'b +impl<'a, 'b, 'c> FlatMapVisitor { fn new(de: &'b mut Deserializer<'a>) -> Self { @@ -195,7 +188,6 @@ impl<'a, 'b, 'c> FlatMapVisitor<'a, 'b> }); debug_assert!(ldepth == rdepth); - // a[b][c][d] = 1 => a, b], c][d] if ldepth > 1 { let ksplit: Vec<&str> = k.splitn(3, '[').collect(); let a = ksplit[0]; @@ -206,11 +198,9 @@ impl<'a, 'b, 'c> FlatMapVisitor<'a, 'b> panic!("Tried adding a nested element to a flat level"); }, Some(&Level::Nested(ref x)) => { - // map.get(a) = x&b[c][d]=v format!("{}&{}[{}={}", &x, &b[..b.len()-1], &c, &v).into() }, None => { - // map.insert(a, b[c][d]=v) format!("{}[{}={}", &b[..b.len()-1],c, v).into() } }; @@ -239,21 +229,16 @@ impl<'a, 'b, 'c> FlatMapVisitor<'a, 'b> let x = match map.get(k.as_ref()) { Some(_) => { panic!("Attempted to set the value of {} twice", k); - // map.get(a) = x&b=v - // format!("{}&{}={}", &x, &b[..b.len()-1], &v).into() }, None => { v - // map.insert(a, b=v) - // format!("{}={}", &b[..b.len()-1], &v).into() } }; map.insert(k.into_owned(), Level::Flat(x.into_owned())); } } - println!("Map constructed: {:?}", map); + // println!("Map constructed: {:?}", map); FlatMapVisitor { - de: de, iter: map.into_iter().fuse().peekable(), } } @@ -264,18 +249,10 @@ impl<'a, 'b, 'c> FlatMapVisitor<'a, 'b> use serde::de::value::ValueDeserializer; -impl<'a, 'b, 'c> de::MapVisitor for FlatMapVisitor<'a, 'b> { +impl de::MapVisitor for FlatMapVisitor { type Error = Error; - // __Visitor::visit_map - // visit_map -> visit_key::<__Field> -> - // MapVisitor::visit_key::<__Field>() - // -> visit_key_seed(PhantomData<__Field>) - // -> __Field::deserialize() - // seed.deserialize(key.into_deserializer()) - // becoes flat(seed).deserialize() - // Swap for visit_key_seed(FlatDeserializer<__Field>) fn visit_key_seed<K>(&mut self, seed: K) -> Result<Option<K::Value>, Error> where K: de::DeserializeSeed, { |