parent
5bd60e7397
commit
7a8c535c5a
13
src/de.rs
13
src/de.rs
|
@ -248,7 +248,6 @@ impl<'de, 'b> de::Deserializer<'de> for &'b mut Deserializer<'de> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
forward_to_deserialize_any! {
|
forward_to_deserialize_any! {
|
||||||
bool u8 u16 u32 u64 i8 i16 i32 i64 f32 f64 char str string seq
|
bool u8 u16 u32 u64 i8 i16 i32 i64 f32 f64 char str string seq
|
||||||
bytes byte_buf map struct unit newtype_struct
|
bytes byte_buf map struct unit newtype_struct
|
||||||
|
@ -560,9 +559,19 @@ impl<'de> de::Deserializer<'de> for ValueDeserializer<'de> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn deserialize_newtype_struct<V>(
|
||||||
|
self,
|
||||||
|
_name: &'static str,
|
||||||
|
visitor: V
|
||||||
|
) -> Result<V::Value, Error>
|
||||||
|
where V: de::Visitor<'de>
|
||||||
|
{
|
||||||
|
visitor.visit_newtype_struct(self)
|
||||||
|
}
|
||||||
|
|
||||||
forward_to_deserialize_any! {
|
forward_to_deserialize_any! {
|
||||||
bool u8 u16 u32 u64 i8 i16 i32 i64 f32 f64 char str string seq
|
bool u8 u16 u32 u64 i8 i16 i32 i64 f32 f64 char str string seq
|
||||||
bytes byte_buf map unit newtype_struct identifier
|
bytes byte_buf map unit identifier
|
||||||
ignored_any unit_struct tuple_struct tuple
|
ignored_any unit_struct tuple_struct tuple
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
12
src/value.rs
12
src/value.rs
|
@ -544,10 +544,20 @@ impl<'de> de::Deserializer<'de> for Value {
|
||||||
visitor.visit_some(self)
|
visitor.visit_some(self)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn deserialize_newtype_struct<V>(
|
||||||
|
self,
|
||||||
|
_name: &'static str,
|
||||||
|
visitor: V
|
||||||
|
) -> Result<V::Value, ::de::Error>
|
||||||
|
where V: de::Visitor<'de>
|
||||||
|
{
|
||||||
|
visitor.visit_newtype_struct(self)
|
||||||
|
}
|
||||||
|
|
||||||
forward_to_deserialize_any! {
|
forward_to_deserialize_any! {
|
||||||
bool u8 u16 u32 u64 i8 i16 i32 i64 f32 f64 char str string unit seq
|
bool u8 u16 u32 u64 i8 i16 i32 i64 f32 f64 char str string unit seq
|
||||||
bytes byte_buf map unit_struct tuple_struct struct
|
bytes byte_buf map unit_struct tuple_struct struct
|
||||||
tuple ignored_any newtype_struct identifier
|
tuple ignored_any identifier
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -509,3 +509,19 @@ fn extra_keys() {
|
||||||
assert!(toml.clone().try_into::<Foo>().is_ok());
|
assert!(toml.clone().try_into::<Foo>().is_ok());
|
||||||
assert!(toml::from_str::<Foo>(&toml.to_string()).is_ok());
|
assert!(toml::from_str::<Foo>(&toml.to_string()).is_ok());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn newtypes() {
|
||||||
|
#[derive(Deserialize, Serialize, PartialEq, Debug, Clone)]
|
||||||
|
struct A {
|
||||||
|
b: B
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Deserialize, Serialize, PartialEq, Debug, Clone)]
|
||||||
|
struct B(u32);
|
||||||
|
|
||||||
|
equivalent! {
|
||||||
|
A { b: B(2) },
|
||||||
|
Table(map! { b: Integer(2) }),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue