Library to serialize and deserialize [Syn] syntax trees.
Add this to your Cargo.toml
:
toml
[dependencies]
syn-serde = "0.3"
Compiler support: requires rustc 1.56+
toml
[dependencies]
syn-serde = { version = "0.3", features = ["json"] }
syn = { version = "2", features = ["full"] }
```rust use syn_serde::json;
let synfile: syn::File = syn::parsequote! { fn main() { println!("Hello, world!"); } };
println!("{}", json::tostringpretty(&syn_file)); ```
This prints the following JSON:
json
{
"items": [
{
"fn": {
"ident": "main",
"inputs": [],
"output": null,
"stmts": [
{
"semi": {
"macro": {
"path": {
"segments": [
{
"ident": "println"
}
]
},
"delimiter": "paren",
"tokens": [
{
"lit": "\"Hello, world!\""
}
]
}
}
}
]
}
}
]
}
The [rust2json
] example parse a Rust source file into a syn_serde::File
and print out a JSON representation of the syntax tree.
The [json2rust
] example parse a JSON file into a syn_serde::File
and
print out a Rust syntax tree.
json
— Provides functions for JSON <-> Rust serializing and
deserializing.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.
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.