#derive-debug #debugging #deserialize #serde-derive #output #representation #helper

serde_dbgfmt

使用 serde 反序列化 #[derive(Debug)] 输出

1 个不稳定版本

0.1.0 2024年2月2日

#1284编码

MIT/Apache

50KB
1.5K SLoC

serde_dbgfmt

ci

使用 serde 反序列化 #[derive(Debug)] 的输出。

这个库允许您通过 serde 反序列化 Rust 类型的调试表示。这包括所有使用 #[derive(Debug)] 的类型,以及使用 std::fmt 中的调试辅助程序输出其调试表示的任何其他类型。

示例

use serde::Deserialize;

#[derive(Debug, Deserialize)]
struct Test {
    message: String,
}

let text = format!("{:?}", Test { message: "Hello, World!".into() });
let value: Test = serde_defmt::from_str(&text)
    .expect("failed to deserialize from the debug repr");

assert_eq!(value.message, "Hello, World!");

注意事项

  • 这个库解析由 std::fmt 中的调试辅助程序生成的格式。这应该涵盖了所有具有 #[derive(Debug)] 的类型以及许多自定义实现,但由于自定义实现可以执行任何操作,因此不能保证其工作。
  • 调试辅助程序输出的调试格式不一定稳定。虽然在过去它相对稳定,但无法保证将来不会更改。
  • 用于反序列化的结构体名称必须与文本调试表示中的名称匹配。如果您想在代码库中使用不同的结构体名称,可以使用 #[serde(rename = "..")]

另请参阅

  • serde_fmt 库是这个包的逆。它允许您为任何实现 Serialize 的结构体打印调试表示。

依赖项

~115–360KB