Skip to main content

docx_rs/reader/
bookmark_start.rs

1use std::io::Read;
2use std::str::FromStr;
3
4use super::*;
5
6impl ElementReader for BookmarkStart {
7    fn read<R: Read>(
8        _r: &mut EventReader<R>,
9        attrs: &[OwnedAttribute],
10    ) -> Result<Self, ReaderError> {
11        let mut id: Option<usize> = None;
12        let mut name: Option<String> = None;
13
14        for a in attrs {
15            let local_name = &a.name.local_name;
16            if local_name == "id" {
17                id = Some(usize::from_str(&a.value)?);
18            } else if local_name == "name" {
19                name = Some(a.value.clone());
20            }
21        }
22        if id.is_none() || name.is_none() {
23            return Err(ReaderError::XMLReadError);
24        }
25        Ok(BookmarkStart::new(id.unwrap(), name.unwrap()))
26    }
27}