use std::io::Read; use std::str::FromStr; use xml::attribute::OwnedAttribute; use xml::reader::EventReader; use super::*; impl ElementReader for BookmarkStart { fn read( _r: &mut EventReader, attrs: &[OwnedAttribute], ) -> Result { let mut id: Option = None; let mut name: Option = None; for a in attrs { let local_name = &a.name.local_name; if local_name == "id" { id = Some(usize::from_str(&a.value)?); } else if local_name == "name" { name = Some(a.value.clone()); } } if id.is_none() || name.is_none() { return Err(ReaderError::XMLReadError); } Ok(BookmarkStart::new(id.unwrap(), name.unwrap())) } }