From 06fb508e2b730a0ece73e962869bfc09da63e117 Mon Sep 17 00:00:00 2001 From: Dirkjan Ochtman Date: Thu, 19 Dec 2024 15:39:03 +0100 Subject: [PATCH] Qualify trait method calls to avoid conflicts --- instant-xml-macros/src/de.rs | 12 ++++++------ instant-xml-macros/src/ser.rs | 10 ++++++++-- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/instant-xml-macros/src/de.rs b/instant-xml-macros/src/de.rs index 8e240f3..a273c2e 100644 --- a/instant-xml-macros/src/de.rs +++ b/instant-xml-macros/src/de.rs @@ -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()?; } }, diff --git a/instant-xml-macros/src/ser.rs b/instant-xml-macros/src/ser.rs index 0516eb1..e92be6d 100644 --- a/instant-xml-macros/src/ser.rs +++ b/instant-xml-macros/src/ser.rs @@ -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, + )?; )); }