docx_rs/documents/
build_xml.rs1use crate::xml_builder::XMLBuilder;
2use std::io::Write;
3
4pub trait BuildXML {
5 #[doc(hidden)]
7 fn build_to<W: Write>(
8 &self,
9 stream: crate::xml::writer::EventWriter<W>,
10 ) -> crate::xml::writer::Result<crate::xml::writer::EventWriter<W>>;
11
12 #[doc(hidden)]
13 fn build(&self) -> Vec<u8> {
14 self.build_to(
15 XMLBuilder::new(Vec::new())
16 .into_inner()
17 .expect("failed to create XML builder"),
18 )
19 .expect("should write to buf")
20 .into_inner()
21 .expect("failed to extract buffer")
22 }
23}
24
25impl<T: BuildXML> BuildXML for &T {
26 fn build_to<W: Write>(
28 &self,
29 stream: crate::xml::writer::EventWriter<W>,
30 ) -> crate::xml::writer::Result<crate::xml::writer::EventWriter<W>> {
31 (*self).build_to(stream)
32 }
33}
34
35impl<T: BuildXML> BuildXML for Box<T> {
36 fn build_to<W: Write>(
38 &self,
39 stream: crate::xml::writer::EventWriter<W>,
40 ) -> crate::xml::writer::Result<crate::xml::writer::EventWriter<W>> {
41 (**self).build_to(stream)
42 }
43}