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 解析器实现
561 每月下载
在 21 个 crate(7 个直接) 中使用
235KB
6.5K SLoC
syn-serde
用于序列化和反序列化 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 提供的所有数据结构都可以转换为 Syn 和 proc-macro2 的数据结构。
syn-serde 0.3 的数据结构与 Syn 2.x 的数据结构兼容。
许可证
根据您的选择,在 Apache License, Version 2.0 或 MIT 许可证 下许可。
除非您明确说明,否则根据 Apache-2.0 许可证定义,您有意提交给工作的任何贡献都应如上所述双重许可,而无需任何额外条款或条件。
依赖项
~0.4–1MB
~25K SLoC