Qualify trait method calls to avoid conflicts

This commit is contained in:
Dirkjan Ochtman 2024-12-19 15:39:03 +01:00
parent cb48920b5b
commit 06fb508e2b
2 changed files with 14 additions and 8 deletions

View File

@ -475,10 +475,10 @@ fn deserialize_inline_struct(
deserialize.extend(quote!(if <#field_ty as FromXml<'xml>>::matches(current, None) {
match <#field_ty as FromXml>::KIND {
Kind::Element => {
<#field_ty>::deserialize(&mut into.#field_name, #field_str, deserializer)?;
<#field_ty as FromXml>::deserialize(&mut into.#field_name, #field_str, deserializer)?;
}
Kind::Scalar => {
<#field_ty>::deserialize(&mut into.#field_name, #field_str, deserializer)?;
<#field_ty as FromXml>::deserialize(&mut into.#field_name, #field_str, deserializer)?;
deserializer.ignore()?;
}
}
@ -647,7 +647,7 @@ fn named_field<'a>(
Node::Text(text) => {
seen_direct = true;
let mut nested = deserializer.for_node(Node::Text(text));
<#no_lifetime_type>::deserialize(&mut #val_name, #field_str, &mut nested)?;
<#no_lifetime_type as FromXml>::deserialize(&mut #val_name, #field_str, &mut nested)?;
}
));
// We can only enter this FromXml impl if the caller found the opening
@ -657,7 +657,7 @@ fn named_field<'a>(
after_loop.extend(quote!(
if !seen_direct {
let mut nested = deserializer.for_node(Node::Text("".into()));
<#no_lifetime_type>::deserialize(&mut #val_name, #field_str, &mut nested)?;
<#no_lifetime_type as FromXml>::deserialize(&mut #val_name, #field_str, &mut nested)?;
}
));
} else {
@ -665,11 +665,11 @@ fn named_field<'a>(
__Elements::#enum_name => match <#no_lifetime_type as FromXml>::KIND {
Kind::Element => {
let mut nested = deserializer.nested(data);
<#no_lifetime_type>::deserialize(&mut #val_name, #field_str, &mut nested)?;
<#no_lifetime_type as FromXml>::deserialize(&mut #val_name, #field_str, &mut nested)?;
}
Kind::Scalar => {
let mut nested = deserializer.nested(data);
<#no_lifetime_type>::deserialize(&mut #val_name, #field_str, &mut nested)?;
<#no_lifetime_type as FromXml>::deserialize(&mut #val_name, #field_str, &mut nested)?;
nested.ignore()?;
}
},

View File

@ -419,11 +419,17 @@ fn named_field(
return Ok(());
} else if field_meta.direct {
body.extend(quote!(
self.#field_name.serialize(None, serializer)?;
<#no_lifetime_type as ToXml>::serialize(
&self.#field_name, None, serializer
)?;
));
} else {
body.extend(quote!(
self.#field_name.serialize(Some(::instant_xml::Id { ns: #ns, name: #tag }), serializer)?;
<#no_lifetime_type as ToXml>::serialize(
&self.#field_name,
Some(::instant_xml::Id { ns: #ns, name: #tag }),
serializer,
)?;
));
}