docx_rs/documents/elements/
header_reference.rs

1use crate::documents::BuildXML;
2use crate::xml_builder::*;
3use std::io::Write;
4
5use serde::Serialize;
6
7#[derive(Debug, Clone, PartialEq, Serialize)]
8#[serde(rename_all = "camelCase")]
9pub struct HeaderReference {
10    pub header_type: String,
11    pub id: String,
12}
13
14impl Default for HeaderReference {
15    fn default() -> HeaderReference {
16        HeaderReference {
17            header_type: "default".to_owned(),
18            id: "rId4".to_owned(),
19        }
20    }
21}
22
23impl HeaderReference {
24    pub fn new(t: impl Into<String>, id: impl Into<String>) -> HeaderReference {
25        HeaderReference {
26            header_type: t.into(),
27            id: id.into(),
28        }
29    }
30}
31
32impl BuildXML for HeaderReference {
33    fn build_to<W: Write>(
34        &self,
35        stream: xml::writer::EventWriter<W>,
36    ) -> xml::writer::Result<xml::writer::EventWriter<W>> {
37        XMLBuilder::from(stream)
38            .header_reference(&self.header_type, &self.id)?
39            .into_inner()
40    }
41}