With this, the derives should work with most of the crates and types the generated code refers to being aliased. Notably, methods are still mostly invoked using regular method syntax so those coming from trait could still be aliased by outside code. |
||
|---|---|---|
| yaserde | ||
| yaserde_derive | ||
| .gitignore | ||
| .travis.yml | ||
| Cargo.toml | ||
| LICENSE | ||
| README.md | ||
| rustfmt.toml | ||
yaserde

Yet Another Serializer/Deserializer specialized for XML
Goal
This library will support XML de/ser-ializing with all specific features.
Supported types
- Struct
- Vec
- Enum
- Enum with complex types
- Option
- String
- bool
- number (u8, i8, u32, i32, f32, f64)
Attributes
- attribute: this field is defined as an attribute
- default: defines the default function to init the field
- flatten: Flatten the contents of the field
- namespace: defines the namespace of the field
- rename: be able to rename a field
- root: rename the based element. Used only at the XML root.
- skip_serializing_if: Skip the serialisation for this field if the condition is true
- text: this field match to the text content
Custom De/Ser-rializer
Any type can define a custom deserializer and/or serializer. To implement it, define the implementation of YaDeserialize/YaSerialize
impl YaDeserialize for MyType {
fn deserialize<R: Read>(reader: &mut yaserde::de::Deserializer<R>) -> Result<Self, String> {
// deserializer code
}
}
impl YaSerialize for MyType {
fn serialize<W: Write>(&self, writer: &mut yaserde::ser::Serializer<W>) -> Result<(), String> {
// serializer code
}
}