diff --git a/crates/toml/tests/testsuite/serde.rs b/crates/toml/tests/testsuite/serde.rs index ae762b3d..d9d7a6db 100644 --- a/crates/toml/tests/testsuite/serde.rs +++ b/crates/toml/tests/testsuite/serde.rs @@ -743,7 +743,6 @@ fn newtype_variant() { } #[test] -#[should_panic = "invalid type: string \"x\", expected tuple struct NewType"] fn newtype_key() { #[derive(PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Clone, Serialize, Deserialize)] struct NewType(String); diff --git a/crates/toml_edit/src/de/key.rs b/crates/toml_edit/src/de/key.rs index 3da41df4..a3b28256 100644 --- a/crates/toml_edit/src/de/key.rs +++ b/crates/toml_edit/src/de/key.rs @@ -62,9 +62,20 @@ impl<'de> serde::de::Deserializer<'de> for KeyDeserializer { self.deserialize_any(visitor) } + fn deserialize_newtype_struct( + self, + _name: &'static str, + visitor: V, + ) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_newtype_struct(self) + } + serde::forward_to_deserialize_any! { bool u8 u16 u32 u64 i8 i16 i32 i64 f32 f64 char str string seq - bytes byte_buf map option unit newtype_struct + bytes byte_buf map option unit ignored_any unit_struct tuple_struct tuple identifier } }