Refer to Option through serde::export in generated code

This commit is contained in:
David Tolnay 2019-02-28 16:35:29 -08:00
parent 94f152730c
commit 58bbaa9e80
No known key found for this signature in database
GPG Key ID: F9BA143B95FF6D82
2 changed files with 10 additions and 1 deletions

View File

@ -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)));

View File

@ -522,6 +522,13 @@ fn test_gen() {
}
assert::<FlattenWith>();
#[derive(Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
struct FlattenDenyUnknown<T> {
#[serde(flatten)]
t: T,
}
#[derive(Serialize, Deserialize)]
struct StaticStrStruct<'a> {
a: &'a str,