# xsd-parser-types
Types and helpers used by the code generated by
[`xsd-parser`](https://github.com/Bergmann89/xsd-parser).
<a href="https://github.com/Bergmann89/xsd-parser/blob/master/LICENSE"><img src="https://img.shields.io/crates/l/xsd-parser-types" alt="Crates.io License"></a> <a href="https://crates.io/crates/xsd-parser-types"><img src="https://img.shields.io/crates/v/xsd-parser-types" alt="Crates.io Version"></a> <a href="https://crates.io/crates/xsd-parser-types"><img src="https://img.shields.io/crates/d/xsd-parser-types" alt="Crates.io Total Downloads"></a> <a href="https://docs.rs/xsd-parser-types"><img src="https://img.shields.io/docsrs/xsd-parser-types" alt="docs.rs"></a> <a href="https://github.com/Bergmann89/xsd-parser/actions/workflows/main.yml"><img src="https://github.com/Bergmann89/xsd-parser/actions/workflows/main.yml/badge.svg" alt="Github CI"></a> <a href="https://deps.rs/repo/github/Bergmann89/xsd-parser"><img src="https://deps.rs/repo/github/Bergmann89/xsd-parser/status.svg" alt="Dependency Status"></a>
---
## Overview
`xsd-parser-types` contains the **runtime types** that generated code from
[`xsd-parser`](https://crates.io/crates/xsd-parser) depends on. It is split out
into a separate crate to keep the main code generator light on dependencies and
to make it easier for downstream crates to control their own runtime stack.
The crate provides:
- small utility traits (`AsAny`, `WithNamespace`)
- helper types for XML namespaces and raw byte handling
- types for unstructured XML content (`xs:any`, `xs:anyAttribute`, mixed text)
- helper traits and adapters for `quick-xml`-based serialization and
deserialization (incl. optional async support)
If you use `xsd-parser` to generate Rust code, you must also depend on
`xsd-parser-types` in your own crate and enable the correct feature flags.
Generated code will reference the runtime types from this crate, and missing
features will lead to compile-time errors.
In short: generated code requires `xsd-parser-types` as a direct dependency
with the same feature flags that were active during code generation.
## Features
```toml
[dependencies]
xsd-parser-types = { version = "0.1", features = [ "xml", "async", "quick-xml" ] }
```
Available features:
- `xml` - enables the unstructured XML types
- `async` - adds async deserializer reader support
- `quick-xml` - enables serialization/deserialization support
Most users do not need to enable features manually, `xsd-parser` will automatically do this.
## License
This crate is licensed under the MIT License.