2 个不稳定版本

0.2.0 2022年8月15日
0.1.0 2019年10月17日

#2616解析器实现


yolol-yaml-deserializer 中使用

MIT 许可证

39KB
774

crates.io docs.rs

libyaml

此 Rust 包通过 LibYAML 库的 unsafe-libyaml 包提供高级绑定。它有以下限制

  • 当前的 token 和文档 API 仍未实现。

安装

只需将此包添加到您的 Cargo.toml

[dependencies]
libyaml = "0.2"

您不需要在目标系统上安装 LibYAML 库。相反,unsafe-libyaml 提供了一个编译后的版本。

许可证

此包受 MIT 许可证 的约束。


lib.rs:

LibYAML 库的高级绑定。

读取 YAML

要读取 YAML 流,请使用 Parser。以下示例计算流中别名事件的数目。

#
let alias_count = Parser::new(reader)?.into_iter().filter(|e| {
    if let Ok(Event::Alias { .. }) = e { true } else { false }
}).count();

写入 YAML

要写入 YAML 流,请使用 Emitter。以下示例写入包含单个标量的单个文档的流。

#
let mut emitter = Emitter::new(writer)?;

emitter.emit(Event::StreamStart { encoding: None })?;
emitter.emit(Event::DocumentStart { implicit: true })?;
emitter.emit(Event::Scalar {
    anchor: None,
    tag: Some(tag::INT.to_string()),
    value: "42".to_string(),
    plain_implicit: false,
    quoted_implicit: false,
    style: None,
})?;
emitter.emit(Event::DocumentEnd { implicit: true })?;
emitter.emit(Event::StreamEnd)?;

依赖关系

~440KB
~11K SLoC