diff --git a/serde_derive/src/de.rs b/serde_derive/src/de.rs index 7be6c4b9..7fa1030b 100644 --- a/serde_derive/src/de.rs +++ b/serde_derive/src/de.rs @@ -2476,7 +2476,9 @@ fn deserialize_map( let collected_deny_unknown_fields = if cattrs.has_flatten() && cattrs.deny_unknown_fields() { Some(quote! { - if let _serde::export::Some(_serde::export::Some((__key, _))) = __collect.into_iter().filter(Option::is_some).next() { + if let _serde::export::Some(_serde::export::Some((__key, _))) = + __collect.into_iter().filter(_serde::export::Option::is_some).next() + { if let _serde::export::Some(__key) = __key.as_str() { return _serde::export::Err( _serde::de::Error::custom(format_args!("unknown field `{}`", &__key))); diff --git a/test_suite/tests/test_gen.rs b/test_suite/tests/test_gen.rs index 788e91b8..92bb0ae1 100644 --- a/test_suite/tests/test_gen.rs +++ b/test_suite/tests/test_gen.rs @@ -522,6 +522,13 @@ fn test_gen() { } assert::(); + #[derive(Serialize, Deserialize)] + #[serde(deny_unknown_fields)] + struct FlattenDenyUnknown { + #[serde(flatten)] + t: T, + } + #[derive(Serialize, Deserialize)] struct StaticStrStruct<'a> { a: &'a str,