diff --git a/xso/src/asxml.rs b/xso/src/asxml.rs index 2fe670414b667f4e50b14ece7ea902e76dda1a59..5c13759670c8d0a3e817adf8e00f9ac62c8f848a 100644 --- a/xso/src/asxml.rs +++ b/xso/src/asxml.rs @@ -75,7 +75,7 @@ impl AsXml for Box { T: 'x; fn as_xml_iter(&self) -> Result, Error> { - Ok(BoxAsXml(Box::new(T::as_xml_iter(&self)?))) + Ok(BoxAsXml(Box::new(T::as_xml_iter(self)?))) } } diff --git a/xso/src/error.rs b/xso/src/error.rs index b6304261032015ace37d8170a52b7a30d898054c..de70b42cc4d652ea145450834f790adba42a26cb 100644 --- a/xso/src/error.rs +++ b/xso/src/error.rs @@ -76,7 +76,7 @@ impl Error { impl From<&Error> for Error { fn from(other: &Error) -> Self { match other { - Self::XmlError(e) => Self::XmlError(e.clone()), + Self::XmlError(e) => Self::XmlError(*e), Self::TextParseError(e) => Self::TextParseError(Box::new(OpaqueError(e.to_string()))), Self::Other(e) => Self::Other(e), Self::TypeMismatch => Self::TypeMismatch, diff --git a/xso/src/fromxml.rs b/xso/src/fromxml.rs index 4e3ac85430a3cdb2cac71ddbbbed78359630c525..0c76f5e4ad69a73b46a3caaef9de4bc7c6348088 100644 --- a/xso/src/fromxml.rs +++ b/xso/src/fromxml.rs @@ -24,7 +24,7 @@ impl FromEventsBuilder for OptionBuilder { type Output = Option; fn feed(&mut self, ev: rxml::Event) -> Result, Error> { - self.0.feed(ev).map(|ok| ok.map(|value| Some(value))) + self.0.feed(ev).map(|ok| ok.map(Some)) } } @@ -52,7 +52,7 @@ impl FromEventsBuilder for BoxBuilder { type Output = Box; fn feed(&mut self, ev: rxml::Event) -> Result, Error> { - self.0.feed(ev).map(|ok| ok.map(|value| Box::new(value))) + self.0.feed(ev).map(|ok| ok.map(Box::new)) } } @@ -233,7 +233,7 @@ impl> FromXml for Result { /// Builder which discards an entire child tree without inspecting the /// contents. -#[derive(Debug)] +#[derive(Debug, Default)] pub struct Discard { depth: usize, } @@ -241,7 +241,7 @@ pub struct Discard { impl Discard { /// Create a new discarding builder. pub fn new() -> Self { - Self { depth: 0 } + Self::default() } } diff --git a/xso/src/lib.rs b/xso/src/lib.rs index ceb5929ec6f5ded12ae51c96c5a34f0e4cf31b06..b67efeb8e73d61ef81ec040b74fa5bb27dae902c 100644 --- a/xso/src/lib.rs +++ b/xso/src/lib.rs @@ -280,14 +280,14 @@ pub trait AsXmlText { impl AsXmlText for String { /// Return the borrowed string contents. fn as_xml_text(&self) -> Result, self::error::Error> { - Ok(Cow::Borrowed(self.as_str())) + Ok(Cow::Borrowed(self)) } } impl AsXmlText for str { /// Return the borrowed string contents. fn as_xml_text(&self) -> Result, self::error::Error> { - Ok(Cow::Borrowed(&*self)) + Ok(Cow::Borrowed(self)) } } @@ -301,7 +301,7 @@ impl AsXmlText for Box { impl AsXmlText for Cow<'_, B> { /// Return the borrowed [`Cow`] contents. fn as_xml_text(&self) -> Result, self::error::Error> { - B::as_xml_text(self.as_ref()) + B::as_xml_text(self) } } diff --git a/xso/src/text.rs b/xso/src/text.rs index cf43dd83a8d149ae738f25c20352a6db79175412..4fe2565422f7e379bc97b09153a958ab97d561ed 100644 --- a/xso/src/text.rs +++ b/xso/src/text.rs @@ -235,8 +235,7 @@ where .as_ref() .map(AsXmlText::as_xml_text) .transpose()? - .map(|v| (!v.is_empty()).then_some(v)) - .flatten()) + .and_then(|v| (!v.is_empty()).then_some(v))) } }