1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
use crate::{XmlReader, XmlResult};

pub trait XmlRead<'a>: Sized {
    fn from_reader(reader: &mut XmlReader<'a>) -> XmlResult<Self>;

    fn from_str(text: &'a str) -> XmlResult<Self> {
        let mut reader = XmlReader::new(text);
        Self::from_reader(&mut reader)
    }
}

pub trait XmlReadOwned: for<'s> XmlRead<'s> {}

impl<T> XmlReadOwned for T where T: for<'s> XmlRead<'s> {}