1use quick_xml::name::Namespace;
2use std::collections::HashMap;
3use std::str::FromStr;
4
5pub mod de;
6mod error;
7mod namespace;
8pub mod se;
9mod unparsed;
10mod value;
11
12pub use de::XmlDeserialize;
13pub use de::XmlDocument;
14pub use error::XmlError;
15pub use namespace::NamespaceOwned;
16pub use se::XmlSerialize;
17pub use se::XmlSerializeRoot;
18pub use unparsed::Unparsed;
19pub use value::{ParseValueError, ValueDeserialize, ValueSerialize};
20pub use xml_derive::EnumUnitVariants;
21pub use xml_derive::EnumVariants;
22pub use xml_derive::XmlRootTag;
23
24pub trait XmlRootTag {
25 fn root_tag() -> &'static [u8];
26 fn root_ns() -> Option<Namespace<'static>>;
27 fn root_ns_prefixes() -> HashMap<Namespace<'static>, &'static [u8]>;
28}
29
30#[derive(Debug)]
31pub struct FromStrError;
32
33pub trait EnumVariants {
34 const TAGGED_VARIANTS: &'static [(Option<Namespace<'static>>, &'static str)];
35
36 fn variant_names() -> Vec<(Option<Namespace<'static>>, &'static str)>;
38}
39
40pub trait EnumUnitVariants: Sized {
41 type UnitVariants: Into<(Option<Namespace<'static>>, &'static str)> + From<Self> + FromStr;
42}