use peanuts::{ element::{FromElement, IntoElement}, Element, }; pub const XMLNS: &str = "urn:xmpp:avatar:data"; #[derive(Debug, Clone)] pub struct Data(pub String); impl FromElement for Data { fn from_element(mut element: peanuts::Element) -> peanuts::element::DeserializeResult { element.check_name("data")?; element.check_namespace(XMLNS)?; Ok(Self(element.pop_value_opt()?.unwrap_or_default())) } } impl IntoElement for Data { fn builder(&self) -> peanuts::element::ElementBuilder { let builder = Element::builder("data", Some(XMLNS)); if self.0.is_empty() { builder } else { builder.push_text(self.0.clone()) } } }