summaryrefslogtreecommitdiffstats
path: root/lib/src/de.rs
diff options
context:
space:
mode:
Diffstat (limited to 'lib/src/de.rs')
-rw-r--r--lib/src/de.rs168
1 files changed, 10 insertions, 158 deletions
diff --git a/lib/src/de.rs b/lib/src/de.rs
index a59d950..d1673d5 100644
--- a/lib/src/de.rs
+++ b/lib/src/de.rs
@@ -1,6 +1,7 @@
use serde::de;
use value::{Value, ValueKind};
use error::*;
+use std::borrow::Cow;
use std::iter::Peekable;
use std::collections::HashMap;
use std::collections::hash_map::Drain;
@@ -12,169 +13,20 @@ impl de::Deserializer for Value {
fn deserialize<V: de::Visitor>(self, visitor: V) -> Result<V::Value> {
// Deserialize based on the underlying type
match self.kind {
- ValueKind::Boolean(value) => {
- visitor.visit_bool(value)
- }
-
- ValueKind::Table(map) => {
- visitor.visit_map(MapVisitor::new(map))
- }
-
+ ValueKind::Integer(i) => visitor.visit_i64(i),
+ ValueKind::Boolean(b) => visitor.visit_bool(b),
+ ValueKind::Float(f) => visitor.visit_f64(f),
+ // ValueKind::String(Cow::Borrowed(s)) => visitor.visit_str(s),
+ // ValueKind::String(Cow::Owned(s)) => visitor.visit_string(s),
+ ValueKind::Table(map) => visitor.visit_map(MapVisitor::new(map)),
_ => { unimplemented!(); }
}
}
- #[inline]
- fn deserialize_bool<V: de::Visitor>(self, visitor: V) -> Result<V::Value> {
- visitor.visit_bool(self.into_bool()?)
- }
-
- #[inline]
- fn deserialize_u8<V: de::Visitor>(self, visitor: V) -> Result<V::Value> {
- unimplemented!();
- }
-
- #[inline]
- fn deserialize_u16<V: de::Visitor>(self, visitor: V) -> Result<V::Value> {
- unimplemented!();
- }
-
- #[inline]
- fn deserialize_u32<V: de::Visitor>(self, visitor: V) -> Result<V::Value> {
- unimplemented!();
- }
-
- #[inline]
- fn deserialize_u64<V: de::Visitor>(self, visitor: V) -> Result<V::Value> {
- unimplemented!();
- }
-
- #[inline]
- fn deserialize_i8<V: de::Visitor>(self, visitor: V) -> Result<V::Value> {
- unimplemented!();
- }
-
- #[inline]
- fn deserialize_i16<V: de::Visitor>(self, visitor: V) -> Result<V::Value> {
- unimplemented!();
- }
-
- #[inline]
- fn deserialize_i32<V: de::Visitor>(self, visitor: V) -> Result<V::Value> {
- unimplemented!();
- }
-
- #[inline]
- fn deserialize_i64<V: de::Visitor>(self, visitor: V) -> Result<V::Value> {
- visitor.visit_i64(self.into_int()?)
- }
-
- #[inline]
- fn deserialize_f32<V: de::Visitor>(self, visitor: V) -> Result<V::Value> {
- unimplemented!();
- }
-
- #[inline]
- fn deserialize_f64<V: de::Visitor>(self, visitor: V) -> Result<V::Value> {
- visitor.visit_f64(self.into_float()?)
- }
-
- #[inline]
- fn deserialize_char<V: de::Visitor>(self, visitor: V) -> Result<V::Value> {
- unimplemented!();
- }
-
- #[inline]
- fn deserialize_str<V: de::Visitor>(self, visitor: V) -> Result<V::Value> {
- unimplemented!();
- }
-
- #[inline]
- fn deserialize_string<V: de::Visitor>(self, visitor: V) -> Result<V::Value> {
- unimplemented!();
- }
-
- #[inline]
- fn deserialize_bytes<V: de::Visitor>(self, visitor: V) -> Result<V::Value> {
- unimplemented!();
- }
-
- #[inline]
- fn deserialize_byte_buf<V: de::Visitor>(self, visitor: V) -> Result<V::Value> {
- unimplemented!();
- }
-
- #[inline]
- fn deserialize_option<V: de::Visitor>(self, visitor: V) -> Result<V::Value> {
- unimplemented!();
- }
-
- #[inline]
- fn deserialize_unit<V: de::Visitor>(self, visitor: V) -> Result<V::Value> {
- unimplemented!();
- }
-
- #[inline]
- fn deserialize_unit_struct<V: de::Visitor>(self,
- name: &'static str,
- visitor: V)
- -> Result<V::Value> {
- unimplemented!();
- }
-
- #[inline]
- fn deserialize_newtype_struct<V: de::Visitor>(self,
- name: &'static str,
- visitor: V)
- -> Result<V::Value> {
- unimplemented!();
- }
-
- #[inline]
- fn deserialize_seq<V: de::Visitor>(self, visitor: V) -> Result<V::Value> {
- unimplemented!();
- }
-
- #[inline]
- fn deserialize_seq_fixed_size<V: de::Visitor>(self,
- len: usize,
- visitor: V)
- -> Result<V::Value> {
- unimplemented!();
- }
-
- #[inline]
- fn deserialize_tuple<V: de::Visitor>(self, len: usize, visitor: V) -> Result<V::Value> {
- unimplemented!();
- }
-
- #[inline]
- fn deserialize_tuple_struct<V: de::Visitor>(self,
- name: &'static str,
- len: usize,
- visitor: V)
- -> Result<V::Value> {
- unimplemented!();
- }
-
- #[inline]
- fn deserialize_enum<V: de::Visitor>(self,
- name: &'static str,
- variants: &'static [&'static str],
- visitor: V)
- -> Result<V::Value> {
- unimplemented!();
- }
-
- #[inline]
- fn deserialize_ignored_any<V: de::Visitor>(self, visitor: V) -> Result<V::Value> {
- unimplemented!();
- }
-
forward_to_deserialize! {
- map
- struct
- struct_field
+ bool u8 u16 u32 u64 i8 i16 i32 i64 f32 f64 char str string seq
+ seq_fixed_size bytes byte_buf map struct unit enum newtype_struct
+ struct_field ignored_any unit_struct tuple_struct tuple option
}
}