#反序列化 #序列化

hifa_yaserde_derive

序列化和反序列化宏

2个版本

0.9.3 2024年5月7日
0.9.2 2024年5月7日

#101 in #反序列化

33 每月下载
4 crate 中使用

MIT 许可证

83KB
2.5K SLoC

hifa yaserde   构建状态 最新版本 覆盖率状态

针对XML的另一个序列化/反序列化工具

这是media-io/yaserde项目中修改过的版本。

目标

这个库将支持具有所有特定功能的XML的序列化和反序列化。

支持类型

  • 结构体
  • Vec
  • 枚举
  • 具有复杂类型的枚举
  • Option
  • 字符串
  • 布尔值
  • 数字(u8, i8, u32, i32, f32, f64)

属性

  • attribute: 将此字段定义为属性
  • default: 定义用于初始化字段的默认函数
  • flatten: 展平字段的 内容
  • namespace: 定义字段的命名空间
  • rename: 能够重命名字段
  • root: 重命名基本元素。仅在XML根元素中使用。
  • skip_serializing: 将此字段从序列化输出中排除。 更多详细信息...
  • skip_serializing_if: 如果条件为真,则跳过此字段的序列化。 更多详细信息...
  • text: 此字段与文本内容匹配

自定义De/Ser-ializer

任何类型都可以定义自定义反序列化器和/或序列化器。要实现它,请定义YaDeserialize/YaSerialize的实现

impl YaDeserialize for MyType {
  fn deserialize<R: Read>(reader: &mut hifa_yaserde::de::Deserializer<R>) -> Result<Self, String> {
    // deserializer code
  }
}

impl YaSerialize for MyType {
  fn serialize<W: Write>(&self, writer: &mut hifa_yaserde::ser::Serializer<W>) -> Result<(), String> {
    // serializer code
  }
}

依赖项

~2MB
~42K SLoC