Merge pull request #105 from ephraimkunz/serialize-conflict

Use fully qualified method names to prevent collisions with serde derive macros
This commit is contained in:
Marc-Antoine ARNAUD 2021-02-08 11:37:25 +01:00 committed by GitHub
commit 44854b0d4d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 15 additions and 15 deletions

View File

@ -11,7 +11,7 @@ pub fn from_str<T: YaDeserialize>(s: &str) -> Result<T, String> {
} }
pub fn from_reader<R: Read, T: YaDeserialize>(reader: R) -> Result<T, String> { pub fn from_reader<R: Read, T: YaDeserialize>(reader: R) -> Result<T, String> {
T::deserialize(&mut Deserializer::new_from_reader(reader)) <T as YaDeserialize>::deserialize(&mut Deserializer::new_from_reader(reader))
} }
pub struct Deserializer<R: Read> { pub struct Deserializer<R: Read> {

View File

@ -27,7 +27,7 @@ pub fn serialize_with_writer<W: Write, T: YaSerialize>(
_config: &Config, _config: &Config,
) -> Result<W, String> { ) -> Result<W, String> {
let mut serializer = Serializer::new_from_writer(writer); let mut serializer = Serializer::new_from_writer(writer);
match model.serialize(&mut serializer) { match YaSerialize::serialize(model, &mut serializer) {
Ok(()) => Ok(serializer.into_inner()), Ok(()) => Ok(serializer.into_inner()),
Err(msg) => Err(msg), Err(msg) => Err(msg),
} }
@ -46,7 +46,7 @@ pub fn serialize_with_writer_content<W: Write, T: YaSerialize>(
) -> Result<W, String> { ) -> Result<W, String> {
let mut serializer = Serializer::new_for_inner(writer); let mut serializer = Serializer::new_for_inner(writer);
serializer.set_skip_start_end(true); serializer.set_skip_start_end(true);
match model.serialize(&mut serializer) { match YaSerialize::serialize(model, &mut serializer) {
Ok(()) => Ok(serializer.into_inner()), Ok(()) => Ok(serializer.into_inner()),
Err(msg) => Err(msg), Err(msg) => Err(msg),
} }

View File

@ -254,7 +254,7 @@ fn build_unnamed_visitor_calls(
let call_struct_visitor = |struct_name, action| { let call_struct_visitor = |struct_name, action| {
Some(quote! { Some(quote! {
match #struct_name::deserialize(reader) { match <#struct_name as ::yaserde::YaDeserialize>::deserialize(reader) {
Ok(value) => { Ok(value) => {
#action; #action;
let _root = reader.next_event(); let _root = reader.next_event();

View File

@ -158,7 +158,7 @@ pub fn parse(
} }
if let Ok(::xml::reader::XmlEvent::StartElement { .. }) = reader.peek() { if let Ok(::xml::reader::XmlEvent::StartElement { .. }) = reader.peek() {
// If substruct's start element found then deserialize substruct // If substruct's start element found then deserialize substruct
let value = #struct_name::deserialize(reader)?; let value = <#struct_name as ::yaserde::YaDeserialize>::deserialize(reader)?;
#value_label #action; #value_label #action;
} }
} }

View File

@ -102,7 +102,7 @@ fn inner_enum_inspector(
::std::option::Option::Some(#field_label_name.to_string()), ::std::option::Option::Some(#field_label_name.to_string()),
); );
writer.set_skip_start_end(false); writer.set_skip_start_end(false);
#field_label.serialize(writer)?; ::yaserde::YaSerialize::serialize(#field_label, writer)?;
}, },
_ => {} _ => {}
} }
@ -115,7 +115,7 @@ fn inner_enum_inspector(
::std::option::Option::Some(#field_label_name.to_string()), ::std::option::Option::Some(#field_label_name.to_string()),
); );
writer.set_skip_start_end(false); writer.set_skip_start_end(false);
item.serialize(writer)?; ::yaserde::YaSerialize::serialize(item, writer)?;
} }
}, },
_ => {} _ => {}
@ -166,7 +166,7 @@ fn inner_enum_inspector(
let serialize = quote! { let serialize = quote! {
writer.set_start_event_name(::std::option::Option::None); writer.set_start_event_name(::std::option::Option::None);
writer.set_skip_start_end(true); writer.set_skip_start_end(true);
item.serialize(writer)?; ::yaserde::YaSerialize::serialize(item, writer)?;
}; };
let write_sub_type = |data_type| { let write_sub_type = |data_type| {

View File

@ -211,7 +211,7 @@ pub fn serialize(
if let ::std::option::Option::Some(ref item) = &self.#label { if let ::std::option::Option::Some(ref item) = &self.#label {
writer.set_start_event_name(::std::option::Option::None); writer.set_start_event_name(::std::option::Option::None);
writer.set_skip_start_end(true); writer.set_skip_start_end(true);
item.serialize(writer)?; ::yaserde::YaSerialize::serialize(item, writer)?;
} }
} }
} else { } else {
@ -219,7 +219,7 @@ pub fn serialize(
if let ::std::option::Option::Some(ref item) = &self.#label { if let ::std::option::Option::Some(ref item) = &self.#label {
writer.set_start_event_name(::std::option::Option::Some(#label_name.to_string())); writer.set_start_event_name(::std::option::Option::Some(#label_name.to_string()));
writer.set_skip_start_end(false); writer.set_skip_start_end(false);
item.serialize(writer)?; ::yaserde::YaSerialize::serialize(item, writer)?;
} }
} }
}), }),
@ -238,7 +238,7 @@ pub fn serialize(
Some(quote! { Some(quote! {
writer.set_start_event_name(#start_event); writer.set_start_event_name(#start_event);
writer.set_skip_start_end(#skip_start); writer.set_skip_start_end(#skip_start);
self.#label.serialize(writer)?; ::yaserde::YaSerialize::serialize(&self.#label, writer)?;
}) })
} }
Field::FieldVec { data_type } => match *data_type { Field::FieldVec { data_type } => match *data_type {
@ -277,7 +277,7 @@ pub fn serialize(
if let Some(value) = item { if let Some(value) = item {
writer.set_start_event_name(None); writer.set_start_event_name(None);
writer.set_skip_start_end(false); writer.set_skip_start_end(false);
value.serialize(writer)?; ::yaserde::YaSerialize::serialize(value, writer)?;
} }
} }
}), }),
@ -287,7 +287,7 @@ pub fn serialize(
for item in &self.#label { for item in &self.#label {
writer.set_start_event_name(::std::option::Option::None); writer.set_start_event_name(::std::option::Option::None);
writer.set_skip_start_end(true); writer.set_skip_start_end(true);
item.serialize(writer)?; ::yaserde::YaSerialize::serialize(item, writer)?;
} }
}) })
} else { } else {
@ -295,7 +295,7 @@ pub fn serialize(
for item in &self.#label { for item in &self.#label {
writer.set_start_event_name(::std::option::Option::Some(#label_name.to_string())); writer.set_start_event_name(::std::option::Option::Some(#label_name.to_string()));
writer.set_skip_start_end(false); writer.set_skip_start_end(false);
item.serialize(writer)?; ::yaserde::YaSerialize::serialize(item, writer)?;
} }
}) })
} }
@ -308,7 +308,7 @@ pub fn serialize(
Some(quote! { Some(quote! {
writer.set_start_event_name(#start_event); writer.set_start_event_name(#start_event);
writer.set_skip_start_end(#skip_start); writer.set_skip_start_end(#skip_start);
self.#label.serialize(writer)?; ::yaserde::YaSerialize::serialize(&self.#label, writer)?;
})*/ })*/
} }
Field::FieldVec { .. } => { Field::FieldVec { .. } => {