XML-Stinks

Powerful, fast & easy manual XML deserialization using abstractions over quick-xml.

Example usage

```rust use std::convert::Infallible;

use xmlstinks::deserializer::buffered::Buffered as BufferedDeserializer; use xmlstinks::deserializer::{Deserializer, IgnoreEnd}; use xmlstinks::tagged::TagStart; use xmlstinks::DeserializeTagged;

let mut deserializer = BufferedDeserializer::new("BazDF".as_bytes());

let foo = deserializer.de_tag::("foo", IgnoreEnd::No).unwrap();

asserteq!(&foo.name, "Baz"); asserteq!(foo.bar.num, 223);

struct Foo { name: String, bar: Bar, }

impl DeserializeTagged for Foo { type Error = Infallible;

fn deserialize<TDeserializer: Deserializer>(
    start: &TagStart,
    deserializer: &mut TDeserializer,
) -> Result<Self, Self::Error>
{
    let name = deserializer.de_text().unwrap();

    let bar = deserializer.de_tag::<Bar>("bar", IgnoreEnd::No).unwrap();

    Ok(Self { name, bar })
}

}

struct Bar { num: u32, }

impl DeserializeTagged for Bar { type Error = Infallible;

fn deserialize<TDeserializer: Deserializer>(
    start: &TagStart,
    deserializer: &mut TDeserializer,
) -> Result<Self, Self::Error>
{
    let num = u32::from_str_radix(&deserializer.de_text().unwrap(), 16).unwrap();

    Ok(Self { num })
}

} ```