#syn #syntax-tree #serde-json #serialization #serde #json-file

syn-serde

用于序列化和反序列化 Syn 语法树的库

8 个版本

0.3.1 2023年10月18日
0.3.0 2023年7月16日
0.2.4 2023年6月29日
0.2.3 2021年4月6日
0.2.0 2019年9月16日

#139 in 解析器实现

Download history 133/week @ 2024-04-14 134/week @ 2024-04-21 130/week @ 2024-04-28 91/week @ 2024-05-05 160/week @ 2024-05-12 113/week @ 2024-05-19 119/week @ 2024-05-26 79/week @ 2024-06-02 94/week @ 2024-06-09 71/week @ 2024-06-16 121/week @ 2024-06-23 51/week @ 2024-06-30 180/week @ 2024-07-07 201/week @ 2024-07-14 96/week @ 2024-07-21 84/week @ 2024-07-28

561 每月下载
21 个 crate(7 个直接) 中使用

Apache-2.0 OR MIT

235KB
6.5K SLoC

syn-serde

crates.io docs.rs license rustc build status

用于序列化和反序列化 Syn 语法树的库。

用法

将此内容添加到您的 Cargo.toml

[dependencies]
syn-serde = "0.3"

编译器支持:需要 rustc 1.56+

示例

[dependencies]
syn-serde = { version = "0.3", features = ["json"] }
syn = { version = "2", features = ["full"] }
use syn_serde::json;

let syn_file: syn::File = syn::parse_quote! {
    fn main() {
        println!("Hello, world!");
    }
};

println!("{}", json::to_string_pretty(&syn_file));

这将打印以下 JSON

{
  "items": [
    {
      "fn": {
        "ident": "main",
        "inputs": [],
        "output": null,
        "stmts": [
          {
            "semi": {
              "macro": {
                "path": {
                  "segments": [
                    {
                      "ident": "println"
                    }
                  ]
                },
                "delimiter": "paren",
                "tokens": [
                  {
                    "lit": "\"Hello, world!\""
                  }
                ]
              }
            }
          }
        ]
      }
    }
  ]
}

Rust 源文件 -> 语法树的 JSON 表示形式

rust2json 示例将 Rust 源文件解析为 syn_serde::File 并打印出语法树的 JSON 表示形式。

JSON 文件 -> Rust 语法树

json2rust 示例将 JSON 文件解析为 syn_serde::File 并打印出 Rust 语法树。

可选功能

  • json — 提供用于 JSON <-> Rust 序列化和反序列化的函数。

与 Syn 的关系

syn-serde 是 Syn 的分支,syn-serde 提供了一组与 Syn 类似但不完全相同的数据结构。syn-serde 提供的所有数据结构都可以转换为 Synproc-macro2 的数据结构。

syn-serde 0.3 的数据结构与 Syn 2.x 的数据结构兼容。

许可证

根据您的选择,在 Apache License, Version 2.0MIT 许可证 下许可。

除非您明确说明,否则根据 Apache-2.0 许可证定义,您有意提交给工作的任何贡献都应如上所述双重许可,而无需任何额外条款或条件。

依赖项

~0.4–1MB
~25K SLoC