Expand description
Library to serialize and deserialize Syn syntax trees.
Usage
Add this to your Cargo.toml
:
[dependencies]
syn-serde = "0.3"
Compiler support: requires rustc 1.56+
Examples
[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));
This prints the following JSON:
{
"items": [
{
"fn": {
"ident": "main",
"inputs": [],
"output": null,
"stmts": [
{
"semi": {
"macro": {
"path": {
"segments": [
{
"ident": "println"
}
]
},
"delimiter": "paren",
"tokens": [
{
"lit": "\"Hello, world!\""
}
]
}
}
}
]
}
}
]
}
Rust source file -> JSON representation of the syntax tree
The rust2json
example parse a Rust source file into a syn_serde::File
and print out a JSON representation of the syntax tree.
JSON file -> Rust syntax tree
The json2rust
example parse a JSON file into a syn_serde::File
and
print out a Rust syntax tree.
Optional features
json
— Provides functions for JSON <-> Rust serializing and deserializing.
Relationship to Syn
syn-serde is a fork of Syn, and syn-serde provides a set of data structures similar but not identical to Syn. All data structures provided by syn-serde can be converted to the data structures of Syn and proc-macro2.
The data structures of syn-serde 0.3 is compatible with the data structures of Syn 2.x.
Modules
- json
json
A module to provide functions for JSON <-> Rust serialize and deserialize.
Traits
- A trait for the data structures of Syn and proc-macro2.