aboutsummaryrefslogtreecommitdiff
path: root/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 5235e54..fb42cdf 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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;