From f845c0dfd17f654b034ef8d0094cdcaa0ba1231b Mon Sep 17 00:00:00 2001 From: David Stangl Date: Sat, 24 Jul 2021 12:06:31 +0200 Subject: [PATCH 1/2] Use custom target for derive-generated log calls --- yaserde/Cargo.toml | 2 +- yaserde/src/lib.rs | 14 ++++++++++++++ yaserde_derive/src/de/expand_enum.rs | 6 +++--- yaserde_derive/src/de/expand_struct.rs | 6 +++--- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/yaserde/Cargo.toml b/yaserde/Cargo.toml index ff26f21..3f10030 100644 --- a/yaserde/Cargo.toml +++ b/yaserde/Cargo.toml @@ -17,7 +17,7 @@ xml-rs = "0.8.3" log = "0.4" [dev-dependencies] -env_logger = "0.8.2" +env_logger = "0.9.0" yaserde_derive = { version = "0.7.1", path = "../yaserde_derive" } [badges] diff --git a/yaserde/src/lib.rs b/yaserde/src/lib.rs index 3cc92c3..12e3ddd 100644 --- a/yaserde/src/lib.rs +++ b/yaserde/src/lib.rs @@ -217,6 +217,20 @@ serialize_type!(i64); serialize_type!(f32); serialize_type!(f64); +/// Used in code generated by yaserde_derive for logging +#[macro_export] +#[doc(hidden)] +macro_rules! __derive_debug { + ($($arg:tt)+) => { ::yaserde::log::debug!(target: "yaserde_derive", $($arg)+) }; +} + +/// Used in code generated by yaserde_derive for logging +#[macro_export] +#[doc(hidden)] +macro_rules! __derive_trace { + ($($arg:tt)+) => { ::yaserde::log::trace!(target: "yaserde_derive", $($arg)+) }; +} + #[test] fn default_visitor() { struct Test; diff --git a/yaserde_derive/src/de/expand_enum.rs b/yaserde_derive/src/de/expand_enum.rs index fe32b51..832202c 100644 --- a/yaserde_derive/src/de/expand_enum.rs +++ b/yaserde_derive/src/de/expand_enum.rs @@ -39,7 +39,7 @@ pub fn parse( }; let start_depth = reader.depth(); - ::yaserde::log::debug!("Enum {} @ {}: start to parse {:?}", stringify!(#name), start_depth, named_element); + ::yaserde::__derive_debug!("Enum {} @ {}: start to parse {:?}", stringify!(#name), start_depth, named_element); #namespaces_matching @@ -48,7 +48,7 @@ pub fn parse( loop { let event = reader.peek()?.to_owned(); - ::yaserde::log::trace!("Enum {} @ {}: matching {:?}", stringify!(#name), start_depth, event); + ::yaserde::__derive_trace!("Enum {} @ {}: matching {:?}", stringify!(#name), start_depth, event); match event { ::yaserde::xml::reader::XmlEvent::StartElement { ref name, ref attributes, .. } => { match name.local_name.as_str() { @@ -89,7 +89,7 @@ pub fn parse( } } - ::yaserde::log::debug!("Enum {} @ {}: success", stringify!(#name), start_depth); + ::yaserde::__derive_debug!("Enum {} @ {}: success", stringify!(#name), start_depth); match enum_value { ::std::option::Option::Some(value) => ::std::result::Result::Ok(value), ::std::option::Option::None => { diff --git a/yaserde_derive/src/de/expand_struct.rs b/yaserde_derive/src/de/expand_struct.rs index cf805e2..8be3f5e 100644 --- a/yaserde_derive/src/de/expand_struct.rs +++ b/yaserde_derive/src/de/expand_struct.rs @@ -352,7 +352,7 @@ pub fn parse( (::std::string::String::from(#root), ::std::option::Option::None) }; let start_depth = reader.depth(); - ::yaserde::log::debug!("Struct {} @ {}: start to parse {:?}", stringify!(#name), start_depth, + ::yaserde::__derive_debug!("Struct {} @ {}: start to parse {:?}", stringify!(#name), start_depth, named_element); if reader.depth() == 0 { @@ -367,7 +367,7 @@ pub fn parse( loop { let event = reader.peek()?.to_owned(); - ::yaserde::log::trace!( + ::yaserde::__derive_trace!( "Struct {} @ {}: matching {:?}", stringify!(#name), start_depth, event, ); @@ -425,7 +425,7 @@ pub fn parse( #visit_unused - ::yaserde::log::debug!("Struct {} @ {}: success", stringify!(#name), start_depth); + ::yaserde::__derive_debug!("Struct {} @ {}: success", stringify!(#name), start_depth); ::std::result::Result::Ok(#name{#struct_builder}) } } From ae0a310d1fc6936da37756cb2c1c6fd3fa8ffd8f Mon Sep 17 00:00:00 2001 From: David Stangl Date: Sat, 24 Jul 2021 12:10:41 +0200 Subject: [PATCH 2/2] Hide re-exported xml and log crates from docs --- yaserde/src/de/mod.rs | 2 +- yaserde/src/lib.rs | 16 ++++++---- yaserde_derive/src/de/expand_enum.rs | 16 +++++----- yaserde_derive/src/de/expand_struct.rs | 16 +++++----- yaserde_derive/src/ser/element.rs | 6 ++-- yaserde_derive/src/ser/expand_enum.rs | 18 +++++------ yaserde_derive/src/ser/expand_struct.rs | 6 ++-- .../src/ser/implement_serializer.rs | 32 +++++++++---------- 8 files changed, 58 insertions(+), 54 deletions(-) diff --git a/yaserde/src/de/mod.rs b/yaserde/src/de/mod.rs index 293b36f..325dba2 100644 --- a/yaserde/src/de/mod.rs +++ b/yaserde/src/de/mod.rs @@ -85,7 +85,7 @@ impl<'de, R: Read> Deserializer { } _ => {} } - debug!("Fetched {:?}, new depth {}", next_event, self.depth); + log::debug!("Fetched {:?}, new depth {}", next_event, self.depth); Ok(next_event) } diff --git a/yaserde/src/lib.rs b/yaserde/src/lib.rs index 12e3ddd..8c5961a 100644 --- a/yaserde/src/lib.rs +++ b/yaserde/src/lib.rs @@ -81,10 +81,6 @@ //! Avoid using either `{:?}` or `{:#?}` println! formatters since it'll garble the output of your //! XML. -#[macro_use] -pub extern crate log; -pub extern crate xml; - #[cfg(feature = "yaserde_derive")] #[allow(unused_imports)] #[macro_use] @@ -217,18 +213,26 @@ serialize_type!(i64); serialize_type!(f32); serialize_type!(f64); +/// Re-export for use in yaserde_derive +#[doc(hidden)] +pub use xml as __xml; + +/// Re-export for use in yaserde_derive +#[doc(hidden)] +pub use log as __log; + /// Used in code generated by yaserde_derive for logging #[macro_export] #[doc(hidden)] macro_rules! __derive_debug { - ($($arg:tt)+) => { ::yaserde::log::debug!(target: "yaserde_derive", $($arg)+) }; + ($($arg:tt)+) => { ::yaserde::__log::debug!(target: "yaserde_derive", $($arg)+) }; } /// Used in code generated by yaserde_derive for logging #[macro_export] #[doc(hidden)] macro_rules! __derive_trace { - ($($arg:tt)+) => { ::yaserde::log::trace!(target: "yaserde_derive", $($arg)+) }; + ($($arg:tt)+) => { ::yaserde::__log::trace!(target: "yaserde_derive", $($arg)+) }; } #[test] diff --git a/yaserde_derive/src/de/expand_enum.rs b/yaserde_derive/src/de/expand_enum.rs index 832202c..757c015 100644 --- a/yaserde_derive/src/de/expand_enum.rs +++ b/yaserde_derive/src/de/expand_enum.rs @@ -32,7 +32,7 @@ pub fn parse( reader: &mut ::yaserde::de::Deserializer, ) -> ::std::result::Result { let (named_element, enum_namespace) = - if let ::yaserde::xml::reader::XmlEvent::StartElement{ name, .. } = reader.peek()?.to_owned() { + if let ::yaserde::__xml::reader::XmlEvent::StartElement{ name, .. } = reader.peek()?.to_owned() { (name.local_name.to_owned(), name.namespace.clone()) } else { (::std::string::String::from(#root), ::std::option::Option::None) @@ -50,7 +50,7 @@ pub fn parse( let event = reader.peek()?.to_owned(); ::yaserde::__derive_trace!("Enum {} @ {}: matching {:?}", stringify!(#name), start_depth, event); match event { - ::yaserde::xml::reader::XmlEvent::StartElement { ref name, ref attributes, .. } => { + ::yaserde::__xml::reader::XmlEvent::StartElement { ref name, ref attributes, .. } => { match name.local_name.as_str() { #match_to_enum _named_element => { @@ -58,23 +58,23 @@ pub fn parse( } } - if let ::yaserde::xml::reader::XmlEvent::Characters(content) = reader.peek()?.to_owned() { + if let ::yaserde::__xml::reader::XmlEvent::Characters(content) = reader.peek()?.to_owned() { match content.as_str() { #match_to_enum _ => {} } } } - ::yaserde::xml::reader::XmlEvent::EndElement { ref name } => { + ::yaserde::__xml::reader::XmlEvent::EndElement { ref name } => { if name.local_name == named_element { break; } let _root = reader.next_event(); } - ::yaserde::xml::reader::XmlEvent::Characters(ref text_content) => { + ::yaserde::__xml::reader::XmlEvent::Characters(ref text_content) => { let _root = reader.next_event(); } - ::yaserde::xml::reader::XmlEvent::EndDocument => { + ::yaserde::__xml::reader::XmlEvent::EndDocument => { if #flatten { break; } @@ -231,11 +231,11 @@ fn build_unnamed_visitor_calls( let visitor = #visitor_label{}; let result = reader.read_inner_value::<#field_type, _>(|reader| { - if let ::yaserde::xml::reader::XmlEvent::EndElement { .. } = *reader.peek()? { + if let ::yaserde::__xml::reader::XmlEvent::EndElement { .. } = *reader.peek()? { return visitor.#visitor(""); } - if let ::std::result::Result::Ok(::yaserde::xml::reader::XmlEvent::Characters(s)) + if let ::std::result::Result::Ok(::yaserde::__xml::reader::XmlEvent::Characters(s)) = reader.next_event() { visitor.#visitor(&s) diff --git a/yaserde_derive/src/de/expand_struct.rs b/yaserde_derive/src/de/expand_struct.rs index 8be3f5e..be794fa 100644 --- a/yaserde_derive/src/de/expand_struct.rs +++ b/yaserde_derive/src/de/expand_struct.rs @@ -156,7 +156,7 @@ pub fn parse( // Don't count current struct's StartElement as substruct's StartElement let _root = reader.next_event(); } - if let Ok(::yaserde::xml::reader::XmlEvent::StartElement { .. }) = reader.peek() { + if let Ok(::yaserde::__xml::reader::XmlEvent::StartElement { .. }) = reader.peek() { // If substruct's start element found then deserialize substruct let value = <#struct_name as ::yaserde::YaDeserialize>::deserialize(reader)?; #value_label #action; @@ -346,7 +346,7 @@ pub fn parse( reader: &mut ::yaserde::de::Deserializer, ) -> ::std::result::Result { let (named_element, struct_namespace) = - if let ::yaserde::xml::reader::XmlEvent::StartElement { name, .. } = reader.peek()?.to_owned() { + if let ::yaserde::__xml::reader::XmlEvent::StartElement { name, .. } = reader.peek()?.to_owned() { (name.local_name.to_owned(), name.namespace.clone()) } else { (::std::string::String::from(#root), ::std::option::Option::None) @@ -372,7 +372,7 @@ pub fn parse( stringify!(#name), start_depth, event, ); match event { - ::yaserde::xml::reader::XmlEvent::StartElement{ref name, ref attributes, ..} => { + ::yaserde::__xml::reader::XmlEvent::StartElement{ref name, ref attributes, ..} => { if depth == 0 && name.local_name == #root { // Consume root element. We must do this first. In the case it shares a name with a child element, we don't // want to prematurely match the child element below. @@ -398,7 +398,7 @@ pub fn parse( } depth += 1; } - ::yaserde::xml::reader::XmlEvent::EndElement { ref name } => { + ::yaserde::__xml::reader::XmlEvent::EndElement { ref name } => { if name.local_name == named_element { #write_unused break; @@ -407,12 +407,12 @@ pub fn parse( #write_unused depth -= 1; } - ::yaserde::xml::reader::XmlEvent::EndDocument => { + ::yaserde::__xml::reader::XmlEvent::EndDocument => { if #flatten { break; } } - ::yaserde::xml::reader::XmlEvent::Characters(ref text_content) => { + ::yaserde::__xml::reader::XmlEvent::Characters(ref text_content) => { #set_text let event = reader.next_event()?; #write_unused @@ -456,7 +456,7 @@ fn build_call_visitor( #namespaces_matching let result = reader.read_inner_value::<#field_type, _>(|reader| { - if let ::std::result::Result::Ok(::yaserde::xml::reader::XmlEvent::Characters(s)) = reader.peek() { + if let ::std::result::Result::Ok(::yaserde::__xml::reader::XmlEvent::Characters(s)) = reader.peek() { let val = visitor.#visitor(&s); let _event = reader.next_event()?; val @@ -504,7 +504,7 @@ fn build_code_for_unused_xml_events( ( Some(quote! { let mut buf = ::std::vec![]; - let mut writer = ::std::option::Option::Some(::yaserde::xml::writer::EventWriter::new(&mut buf)); + let mut writer = ::std::option::Option::Some(::yaserde::__xml::writer::EventWriter::new(&mut buf)); }), Some(quote! { if let ::std::option::Option::Some(ref mut w) = writer { diff --git a/yaserde_derive/src/ser/element.rs b/yaserde_derive/src/ser/element.rs index 851057b..1934551 100644 --- a/yaserde_derive/src/ser/element.rs +++ b/yaserde_derive/src/ser/element.rs @@ -16,14 +16,14 @@ pub fn enclose_characters(label: &Option, label_name: String) -> TokenStr fn enclose_xml_event(label_name: String, yaserde_format: TokenStream) -> TokenStream { quote! { - let start_event = ::yaserde::xml::writer::XmlEvent::start_element(#label_name); + let start_event = ::yaserde::__xml::writer::XmlEvent::start_element(#label_name); writer.write(start_event).map_err(|e| e.to_string())?; let yaserde_value = #yaserde_format; - let data_event = ::yaserde::xml::writer::XmlEvent::characters(&yaserde_value); + let data_event = ::yaserde::__xml::writer::XmlEvent::characters(&yaserde_value); writer.write(data_event).map_err(|e| e.to_string())?; - let end_event = ::yaserde::xml::writer::XmlEvent::end_element(); + let end_event = ::yaserde::__xml::writer::XmlEvent::end_element(); writer.write(end_event).map_err(|e| e.to_string())?; } } diff --git a/yaserde_derive/src/ser/expand_enum.rs b/yaserde_derive/src/ser/expand_enum.rs index 962e3a8..d921f4c 100644 --- a/yaserde_derive/src/ser/expand_enum.rs +++ b/yaserde_derive/src/ser/expand_enum.rs @@ -42,7 +42,7 @@ fn inner_enum_inspector( match variant.fields { Fields::Unit => Some(quote! { &#name::#label => { - let data_event = ::yaserde::xml::writer::XmlEvent::characters(#label_name); + let data_event = ::yaserde::__xml::writer::XmlEvent::characters(#label_name); writer.write(data_event).map_err(|e| e.to_string())?; } }), @@ -57,7 +57,7 @@ fn inner_enum_inspector( if field.is_text_content() { return Some(quote!( - let data_event = ::yaserde::xml::writer::XmlEvent::characters(&self.#field_label); + let data_event = ::yaserde::__xml::writer::XmlEvent::characters(&self.#field_label); writer.write(data_event).map_err(|e| e.to_string())?; )); } @@ -81,14 +81,14 @@ fn inner_enum_inspector( match self { &#name::#label { ref #field_label, .. } => { let struct_start_event = - ::yaserde::xml::writer::XmlEvent::start_element(#field_label_name); + ::yaserde::__xml::writer::XmlEvent::start_element(#field_label_name); writer.write(struct_start_event).map_err(|e| e.to_string())?; let string_value = #field_label.to_string(); - let data_event = ::yaserde::xml::writer::XmlEvent::characters(&string_value); + let data_event = ::yaserde::__xml::writer::XmlEvent::characters(&string_value); writer.write(data_event).map_err(|e| e.to_string())?; - let struct_end_event = ::yaserde::xml::writer::XmlEvent::end_element(); + let struct_end_event = ::yaserde::__xml::writer::XmlEvent::end_element(); writer.write(struct_end_event).map_err(|e| e.to_string())?; }, _ => {}, @@ -142,24 +142,24 @@ fn inner_enum_inspector( .map(|field| { let write_element = |action: &TokenStream| { quote! { - let struct_start_event = ::yaserde::xml::writer::XmlEvent::start_element(#label_name); + let struct_start_event = ::yaserde::__xml::writer::XmlEvent::start_element(#label_name); writer.write(struct_start_event).map_err(|e| e.to_string())?; #action - let struct_end_event = ::yaserde::xml::writer::XmlEvent::end_element(); + let struct_end_event = ::yaserde::__xml::writer::XmlEvent::end_element(); writer.write(struct_end_event).map_err(|e| e.to_string())?; } }; let write_string_chars = quote! { - let data_event = ::yaserde::xml::writer::XmlEvent::characters(item); + let data_event = ::yaserde::__xml::writer::XmlEvent::characters(item); writer.write(data_event).map_err(|e| e.to_string())?; }; let write_simple_type = write_element("e! { let s = item.to_string(); - let data_event = ::yaserde::xml::writer::XmlEvent::characters(&s); + let data_event = ::yaserde::__xml::writer::XmlEvent::characters(&s); writer.write(data_event).map_err(|e| e.to_string())?; }); diff --git a/yaserde_derive/src/ser/expand_struct.rs b/yaserde_derive/src/ser/expand_struct.rs index ad7b983..3b3c671 100644 --- a/yaserde_derive/src/ser/expand_struct.rs +++ b/yaserde_derive/src/ser/expand_struct.rs @@ -125,7 +125,7 @@ pub fn serialize( quote!( let (attributes, namespace) = self.#label.serialize_attributes( ::std::vec![], - ::yaserde::xml::namespace::Namespace::empty(), + ::yaserde::__xml::namespace::Namespace::empty(), )?; child_attributes_namespace.extend(&namespace); child_attributes.extend(attributes); @@ -148,11 +148,11 @@ pub fn serialize( return match field.get_type() { Field::FieldOption { .. } => Some(quote!( let s = self.#label.as_deref().unwrap_or_default(); - let data_event = ::yaserde::xml::writer::XmlEvent::characters(s); + let data_event = ::yaserde::__xml::writer::XmlEvent::characters(s); writer.write(data_event).map_err(|e| e.to_string())?; )), _ => Some(quote!( - let data_event = ::yaserde::xml::writer::XmlEvent::characters(&self.#label); + let data_event = ::yaserde::__xml::writer::XmlEvent::characters(&self.#label); writer.write(data_event).map_err(|e| e.to_string())?; )), }; diff --git a/yaserde_derive/src/ser/implement_serializer.rs b/yaserde_derive/src/ser/implement_serializer.rs index dec6802..da3d9ab 100644 --- a/yaserde_derive/src/ser/implement_serializer.rs +++ b/yaserde_derive/src/ser/implement_serializer.rs @@ -25,21 +25,21 @@ pub fn implement_serializer( if !#flatten && !skip { let mut child_attributes = ::std::vec![]; - let mut child_attributes_namespace = ::yaserde::xml::namespace::Namespace::empty(); + let mut child_attributes_namespace = ::yaserde::__xml::namespace::Namespace::empty(); let yaserde_label = writer.get_start_event_name().unwrap_or_else(|| #root.to_string()); let struct_start_event = - ::yaserde::xml::writer::XmlEvent::start_element(yaserde_label.as_ref()) #namespaces_definition; + ::yaserde::__xml::writer::XmlEvent::start_element(yaserde_label.as_ref()) #namespaces_definition; #append_attributes - let event: ::yaserde::xml::writer::events::XmlEvent = struct_start_event.into(); + let event: ::yaserde::__xml::writer::events::XmlEvent = struct_start_event.into(); - if let ::yaserde::xml::writer::events::XmlEvent::StartElement { + if let ::yaserde::__xml::writer::events::XmlEvent::StartElement { name, attributes, namespace, } = event { - let mut attributes: ::std::vec::Vec<::yaserde::xml::attribute::OwnedAttribute> = + let mut attributes: ::std::vec::Vec<::yaserde::__xml::attribute::OwnedAttribute> = attributes.into_owned().to_vec().iter().map(|k| k.to_owned()).collect(); attributes.extend(child_attributes); @@ -48,7 +48,7 @@ pub fn implement_serializer( let mut all_namespaces = namespace.into_owned(); all_namespaces.extend(&child_attributes_namespace); - writer.write(::yaserde::xml::writer::events::XmlEvent::StartElement{ + writer.write(::yaserde::__xml::writer::events::XmlEvent::StartElement{ name, attributes: ::std::borrow::Cow::Owned(all_attributes), namespace: ::std::borrow::Cow::Owned(all_namespaces) @@ -61,7 +61,7 @@ pub fn implement_serializer( #inner_inspector if !#flatten && !skip { - let struct_end_event = ::yaserde::xml::writer::XmlEvent::end_element(); + let struct_end_event = ::yaserde::__xml::writer::XmlEvent::end_element(); writer.write(struct_end_event).map_err(|e| e.to_string())?; } @@ -70,27 +70,27 @@ pub fn implement_serializer( fn serialize_attributes( &self, - mut source_attributes: ::std::vec::Vec<::yaserde::xml::attribute::OwnedAttribute>, - mut source_namespace: ::yaserde::xml::namespace::Namespace, + mut source_attributes: ::std::vec::Vec<::yaserde::__xml::attribute::OwnedAttribute>, + mut source_namespace: ::yaserde::__xml::namespace::Namespace, ) -> ::std::result::Result< - (::std::vec::Vec<::yaserde::xml::attribute::OwnedAttribute>, ::yaserde::xml::namespace::Namespace), + (::std::vec::Vec<::yaserde::__xml::attribute::OwnedAttribute>, ::yaserde::__xml::namespace::Namespace), ::std::string::String > { - let mut child_attributes = ::std::vec::Vec::<::yaserde::xml::attribute::OwnedAttribute>::new(); - let mut child_attributes_namespace = ::yaserde::xml::namespace::Namespace::empty(); + let mut child_attributes = ::std::vec::Vec::<::yaserde::__xml::attribute::OwnedAttribute>::new(); + let mut child_attributes_namespace = ::yaserde::__xml::namespace::Namespace::empty(); let struct_start_event = - ::yaserde::xml::writer::XmlEvent::start_element("temporary_element_to_generate_attributes") + ::yaserde::__xml::writer::XmlEvent::start_element("temporary_element_to_generate_attributes") #namespaces_definition; #append_attributes - let event: ::yaserde::xml::writer::events::XmlEvent = struct_start_event.into(); + let event: ::yaserde::__xml::writer::events::XmlEvent = struct_start_event.into(); - if let ::yaserde::xml::writer::events::XmlEvent::StartElement { attributes, namespace, .. } = event { + if let ::yaserde::__xml::writer::events::XmlEvent::StartElement { attributes, namespace, .. } = event { source_namespace.extend(&namespace.into_owned()); source_namespace.extend(&child_attributes_namespace); - let a: ::std::vec::Vec<::yaserde::xml::attribute::OwnedAttribute> = + let a: ::std::vec::Vec<::yaserde::__xml::attribute::OwnedAttribute> = attributes.into_owned().to_vec().iter().map(|k| k.to_owned()).collect(); source_attributes.extend(a); source_attributes.extend(child_attributes);