Fully qualify calls to FromXml trait methods
This commit is contained in:
parent
f4fb07fca6
commit
0bfd37a9d7
|
@ -130,20 +130,18 @@ fn deserialize_forward_enum(
|
||||||
if !matches.is_empty() {
|
if !matches.is_empty() {
|
||||||
matches.extend(quote!(||));
|
matches.extend(quote!(||));
|
||||||
}
|
}
|
||||||
matches.extend(quote!(#no_lifetime_type::matches(id, field)));
|
matches.extend(quote!(<#no_lifetime_type as FromXml>::matches(id, field)));
|
||||||
|
|
||||||
if !variants.is_empty() {
|
if !variants.is_empty() {
|
||||||
variants.extend(quote!(else));
|
variants.extend(quote!(else));
|
||||||
}
|
}
|
||||||
|
|
||||||
let v_ident = &variant.ident;
|
let v_ident = &variant.ident;
|
||||||
variants.extend(
|
variants.extend(quote!(if <#no_lifetime_type as FromXml>::matches(id, None) {
|
||||||
quote!(if <#no_lifetime_type as FromXml>::matches(id, None) {
|
let mut value = None;
|
||||||
let mut value = None;
|
<#no_lifetime_type as FromXml>::deserialize(deserializer, &mut value)?;
|
||||||
#no_lifetime_type::deserialize(deserializer, &mut value)?;
|
*into = value.map(#ident::#v_ident);
|
||||||
*into = value.map(#ident::#v_ident);
|
}));
|
||||||
}),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let generics = meta.xml_generics(borrowed);
|
let generics = meta.xml_generics(borrowed);
|
||||||
|
@ -153,6 +151,7 @@ fn deserialize_forward_enum(
|
||||||
impl #xml_impl_generics FromXml<'xml> for #ident #ty_generics #where_clause {
|
impl #xml_impl_generics FromXml<'xml> for #ident #ty_generics #where_clause {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn matches(id: ::instant_xml::Id<'_>, field: Option<::instant_xml::Id<'_>>) -> bool {
|
fn matches(id: ::instant_xml::Id<'_>, field: Option<::instant_xml::Id<'_>>) -> bool {
|
||||||
|
use ::instant_xml::FromXml;
|
||||||
#matches
|
#matches
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -161,7 +160,7 @@ fn deserialize_forward_enum(
|
||||||
into: &mut Option<Self>,
|
into: &mut Option<Self>,
|
||||||
) -> Result<(), ::instant_xml::Error> {
|
) -> Result<(), ::instant_xml::Error> {
|
||||||
use ::instant_xml::de::Node;
|
use ::instant_xml::de::Node;
|
||||||
use ::instant_xml::Error;
|
use ::instant_xml::{Error, FromXml};
|
||||||
|
|
||||||
let id = deserializer.parent();
|
let id = deserializer.parent();
|
||||||
#variants else {
|
#variants else {
|
||||||
|
@ -273,7 +272,7 @@ fn deserialize_struct(
|
||||||
into: &mut Option<Self>,
|
into: &mut Option<Self>,
|
||||||
) -> Result<(), ::instant_xml::Error> {
|
) -> Result<(), ::instant_xml::Error> {
|
||||||
use ::instant_xml::de::Node;
|
use ::instant_xml::de::Node;
|
||||||
use ::instant_xml::{Error, Id, Kind};
|
use ::instant_xml::{Error, FromXml, Id, Kind};
|
||||||
|
|
||||||
enum __Elements {
|
enum __Elements {
|
||||||
#elements_enum
|
#elements_enum
|
||||||
|
@ -425,7 +424,7 @@ fn named_field(
|
||||||
));
|
));
|
||||||
} else {
|
} else {
|
||||||
tokens.r#match.extend(quote!(
|
tokens.r#match.extend(quote!(
|
||||||
__Elements::#enum_name => match <#no_lifetime_type>::KIND {
|
__Elements::#enum_name => match <#no_lifetime_type as FromXml>::KIND {
|
||||||
Kind::Element => {
|
Kind::Element => {
|
||||||
let mut nested = deserializer.nested(data);
|
let mut nested = deserializer.nested(data);
|
||||||
FromXml::deserialize(&mut nested, &mut #enum_name)?;
|
FromXml::deserialize(&mut nested, &mut #enum_name)?;
|
||||||
|
@ -457,7 +456,7 @@ fn named_field(
|
||||||
tokens.r#match.extend(quote!(
|
tokens.r#match.extend(quote!(
|
||||||
__Attributes::#enum_name => {
|
__Attributes::#enum_name => {
|
||||||
let mut nested = deserializer.for_node(Node::AttributeValue(attr.value));
|
let mut nested = deserializer.for_node(Node::AttributeValue(attr.value));
|
||||||
let new = <#no_lifetime_type>::deserialize(&mut nested, &mut #enum_name)?;
|
let new = <#no_lifetime_type as FromXml>::deserialize(&mut nested, &mut #enum_name)?;
|
||||||
},
|
},
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
@ -466,7 +465,7 @@ fn named_field(
|
||||||
return_val.extend(quote!(
|
return_val.extend(quote!(
|
||||||
#field_name: match #enum_name {
|
#field_name: match #enum_name {
|
||||||
Some(v) => v,
|
Some(v) => v,
|
||||||
None => <#no_lifetime_type>::missing_value()?,
|
None => <#no_lifetime_type as FromXml>::missing_value()?,
|
||||||
},
|
},
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -527,7 +526,7 @@ fn deserialize_tuple_struct(
|
||||||
into: &mut Option<Self>,
|
into: &mut Option<Self>,
|
||||||
) -> Result<(), ::instant_xml::Error> {
|
) -> Result<(), ::instant_xml::Error> {
|
||||||
use ::instant_xml::de::Node;
|
use ::instant_xml::de::Node;
|
||||||
use ::instant_xml::{Error, Id, Kind};
|
use ::instant_xml::{Error, FromXml, Id, Kind};
|
||||||
|
|
||||||
#declare_values
|
#declare_values
|
||||||
deserializer.ignore()?;
|
deserializer.ignore()?;
|
||||||
|
@ -559,7 +558,7 @@ fn unnamed_field(
|
||||||
Some(Ok(Node::Open(data))) => {
|
Some(Ok(Node::Open(data))) => {
|
||||||
let mut nested = deserializer.nested(data);
|
let mut nested = deserializer.nested(data);
|
||||||
let mut value: Option<#no_lifetime_type> = None;
|
let mut value: Option<#no_lifetime_type> = None;
|
||||||
<#no_lifetime_type>::deserialize(&mut nested, &mut value)?;
|
<#no_lifetime_type as FromXml>::deserialize(&mut nested, &mut value)?;
|
||||||
nested.ignore()?;
|
nested.ignore()?;
|
||||||
value
|
value
|
||||||
}
|
}
|
||||||
|
@ -569,7 +568,7 @@ fn unnamed_field(
|
||||||
}
|
}
|
||||||
Kind::Scalar => {
|
Kind::Scalar => {
|
||||||
let mut value: Option<#no_lifetime_type> = None;
|
let mut value: Option<#no_lifetime_type> = None;
|
||||||
<#no_lifetime_type>::deserialize(deserializer, &mut value)?;
|
<#no_lifetime_type as FromXml>::deserialize(deserializer, &mut value)?;
|
||||||
value
|
value
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -578,7 +577,7 @@ fn unnamed_field(
|
||||||
return_val.extend(quote!(
|
return_val.extend(quote!(
|
||||||
match #name {
|
match #name {
|
||||||
Some(v) => v,
|
Some(v) => v,
|
||||||
None => <#no_lifetime_type>::missing_value()?,
|
None => <#no_lifetime_type as FromXml>::missing_value()?,
|
||||||
},
|
},
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue