xml_data/serializer/
inner.rs1use crate::{
2 serializer::{
3 Element,
4 Serializer,
5 },
6 Result,
7};
8use std::borrow::Cow;
9
10pub trait Inner {
12 fn serialize_elements<S: Serializer>(&self, serializer: &mut S) -> Result<()>;
14}
15
16impl Inner for String {
18 fn serialize_elements<S: Serializer>(&self, serializer: &mut S) -> Result<()> {
19 serializer.serialize_text(self.into())
20 }
21}
22
23impl Inner for Cow<'_, str> {
24 fn serialize_elements<S: Serializer>(&self, serializer: &mut S) -> Result<()> {
25 serializer.serialize_text(self.as_ref().into())
26 }
27}
28
29impl<E: Element> Inner for E {
31 fn serialize_elements<S: Serializer>(&self, serializer: &mut S) -> Result<()> {
32 serializer.serialize_element(self)
33 }
34}
35
36impl<I: Inner> Inner for Option<I> {
38 fn serialize_elements<S: Serializer>(&self, serializer: &mut S) -> Result<()> {
39 if let Some(i) = self {
40 i.serialize_elements(serializer)?;
41 }
42 Ok(())
43 }
44}
45
46impl<I: Inner> Inner for Vec<I> {
48 fn serialize_elements<S: Serializer>(&self, serializer: &mut S) -> Result<()> {
49 for i in self {
50 i.serialize_elements(serializer)?;
51 }
52 Ok(())
53 }
54}