#yaml #serde-yaml #serialization

no-std bin+lib libyml

一个安全的、高效的Rust库,用于解析和生成YAML数据

4个版本

0.0.4 2024年7月20日
0.0.3 2024年5月28日
0.0.2 2024年5月28日
0.0.1 2024年4月28日

#274 in 解析实现

Download history 315/week @ 2024-05-04 488/week @ 2024-05-11 625/week @ 2024-05-18 1286/week @ 2024-05-25 1154/week @ 2024-06-01 2429/week @ 2024-06-08 2269/week @ 2024-06-15 2416/week @ 2024-06-22 2950/week @ 2024-06-29 3614/week @ 2024-07-06 3791/week @ 2024-07-13 6225/week @ 2024-07-20 6116/week @ 2024-07-27 6055/week @ 2024-08-03 8926/week @ 2024-08-10 9286/week @ 2024-08-17

31,445 每月下载量
60 个crate中使用(通过 serde_yml

MIT 许可证

530KB
13K SLoC

LibYML logo

LibYML(unsafe-libyaml的分支)

GitHub Crates.io lib.rs Docs.rs Codecov Build Status

这个库是 unsafe-libyaml 的分支,它是从C语言转换到不安全的Rust的libyaml版本,并在 c2rust 的帮助下进行转换。

这个项目已经被重命名为 LibYML,以简化名称并避免与原始的 unsafe-libyaml crate 混淆,该crate现在已存档且不再维护。

致谢和认可

这个库是基于 David Tolnayunsafe-libyaml 库维护者所做出色工作的分支。

LibYML现在已经发展成为一个具有自己目标和方向的独立库,并不打算取代原始的unsafe-libyaml crate。

如果你目前在项目中使用unsafe-libyaml,我们建议你仔细评估你的需求,并考虑原始库的稳定性和成熟度,同时也要看看Rust生态系统中的其他库提供的功能和改进。

我想向 David Tolnayunsafe-libyamllibyaml 的维护者表示衷心的感谢,他们为Rust和C编程社区做出了宝贵的贡献。

[dependencies]
libyml = "0.0.4"

发布说明可在 GitHub发布 中找到。

Rust版本兼容性

这个库与Rust 1.60及以上版本兼容。

特性

  • 序列化和反序列化:LibYML提供了易于使用的API,可以将Rust结构体和枚举序列化为YAML格式,并将YAML数据反序列化为Rust类型。
  • 自定义结构体和枚举支持:该库允许你处理自定义结构体和枚举,使你的自定义数据类型能够无缝地进行序列化和反序列化。
  • 错误处理:LibYML提供了全面的错误处理机制,包括详细的错误消息,以及处理和从解析和生成错误中恢复的能力。
  • 流支持:该库支持YAML数据的流式传输,允许您有效地增量处理大型YAML文档。
  • 别名和锚支持:LibYML处理YAML别名和锚,使您能够处理涉及引用和重复数据的复杂YAML结构。
  • 标签处理:该库提供对自定义标签的支持,允许您使用特定类型信息序列化和反序列化YAML数据。
  • 可配置的发射器:LibYML允许您自定义发射器设置,例如缩进、行宽和标量样式,以根据您的喜好生成YAML输出。
  • 详尽的文档:该库包含详细的文档和示例,使您能够轻松入门并有效地了解如何使用其各种功能。
  • 安全性和效率:LibYML的设计考虑到安全性和效率。它最大限度地减少不安全代码的使用,并提供一个接口,有助于防止常见的陷阱和错误。

示例

要开始使用LibYML,您可以使用项目examples目录中提供的示例。

LibYML提供了一套全面的示例,以展示其使用和功能。这些示例涵盖了库的各个方面,包括初始化和删除解析器、设置输入字符串、内存管理、字符串操作等。

要运行示例,请克隆存储库并导航到示例目录。每个示例都包含在单独的文件中,专注于特定的功能或用例。

例如,要运行演示LibYML API使用的所有示例,您可以执行以下命令

cargo run --example example

该命令将执行所有示例代码,演示LibYML库的所有功能和用例。

以下是一些您可以单独运行的著名示例

1) apis 示例

api.rs 文件提供了一组用于在LibYML库中处理YAML数据的底层API函数。apis 示例展示了这些低级API的用法,包括以下功能:

  • yaml_parser_initialize - 初始化YAML解析器,
  • yaml_parser_delete - 删除YAML解析器,
  • yaml_parser_set_input_string - 为解析器设置输入字符串,
  • yaml_malloc - 分配内存,
  • yaml_realloc - 重新分配内存,
  • yaml_free - 释放内存,
  • yaml_strdup - 复制字符串,
  • yaml_string_extend - 扩展字符串,
  • yaml_string_join - 连接字符串,

您可以使用以下命令运行apis示例

cargo run --example apis

许可证

MIT许可证,与libyaml相同。

无运行时依赖