我已经戳了serde-yamlyaml-rust crate 一点,但我没有看到任何例子.

推荐答案

serde-yaml's documentation具有以下4个功能:

  • from_reader-从YAML的IO流反序列化T类型的实例.
  • from_slice-从YAML文本字节中反序列化T类型的实例.
  • from_str-从YAML文本字符串反序列化T类型的实例.
  • from_value-将serde_yaml::Value解释为T类型的实例.

from_reader为例:

use serde_yaml; // 0.8.7

fn main() -> Result<(), Box<std::error::Error>> {
    let f = std::fs::File::open("something.yaml")?;
    let d: String = serde_yaml::from_reader(f)?;
    println!("Read YAML string: {}", d);
    Ok(())
}

something.yaml:

"I am YAML"

如果您不知道自己的格式(本例中为String),可以将其反序列化为松散类型的Value,但请务必阅读Serde guide,了解如何进行类型定向序列化和反序列化的完整细节.

另见:

一般来说,使用any Serde格式与其他格式基本相同.

Rust相关问答推荐

有条件默认实现

如何在Rust中为具有多个数据持有者的enum变体编写文档 comments ?

Rust kill std::processs::child

为什么`Vec i64`的和不知道是`Option i64`?

如何高效地将 struct 向量中的字段收集到单独的数组中

在文件链实施中绕过borrow 判断器

Rust编译器似乎被结果类型与anyhow混淆

Rust将String上的迭代器转换为&;[&;str]

Rust 中的静态引用

面临意外的未对齐指针取消引用:地址必须是 0x8 的倍数,但为 0x__错误

无法将`&Vec>`转换为`&[&str]`

没有明确地说return会产生错误:match arms have incompatible types

由特征键控的不同 struct 的集合

错误:将自定义 proc_macro 与用Rust 的宝贝编写的属性一起使用时,无法在此范围内找到属性

无法理解 Rust 对临时值的不可变和可变引用是如何被删除的

使用 `clap` 在 Rust CLI 工具中设置布尔标志

LinkedList::drain_filter::drop 中 DropGuard 的作用是什么?

RAII 模式的 Rust 解决方案,用于在 new() 和 drop() 上修改另一个对象

从 Cranelift 发出 ASM

匹配结果时的简洁日志(log)记录