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! {
|
||||
bool u8 u16 u32 u64 i8 i16 i32 i64 f32 f64 char str string seq
|
||||
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! {
|
||||
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
|
||||
}
|
||||
}
|
||||
|
|
12
src/value.rs
12
src/value.rs
|
@ -544,10 +544,20 @@ impl<'de> de::Deserializer<'de> for Value {
|
|||
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! {
|
||||
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
|
||||
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::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