diff options
-rw-r--r-- | src/lib.rs | 61 |
1 files changed, 61 insertions, 0 deletions
@@ -1,4 +1,65 @@ //! XML is awful. +//! +//! # Examples +//! ``` +//! use std::convert::Infallible; +//! +//! use xml_stinks::deserializer::buffered::Buffered as BufferedDeserializer; +//! use xml_stinks::deserializer::{Deserializer, IgnoreEnd}; +//! use xml_stinks::tagged::TagStart; +//! use xml_stinks::DeserializeTagged; +//! +//! let mut deserializer = +//! BufferedDeserializer::new("<foo>Baz<bar>DF</bar></foo>".as_bytes()); +//! +//! let foo = deserializer.de_tag::<Foo>("foo", IgnoreEnd::No).unwrap(); +//! +//! assert_eq!(&foo.name, "Baz"); +//! assert_eq!(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 }) +//! } +//! } +//! ``` #![deny(clippy::all, clippy::pedantic, unsafe_code, missing_docs)] use crate::deserializer::{Deserializer, Error as DeserializerError, MaybeStatic}; use crate::tagged::TagStart; |