Powerful, fast & easy manual XML deserialization using abstractions over quick-xml.
```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("
let foo = deserializer.de_tag::
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 })
}
} ```