8 releases
0.3.1 | Oct 18, 2023 |
---|---|
0.3.0 | Jul 16, 2023 |
0.2.4 | Jun 29, 2023 |
0.2.3 | Apr 6, 2021 |
0.2.0 | Sep 16, 2019 |
#246 in Parser implementations
1,262 downloads per month
Used in 29 crates
(12 directly)
235KB
6.5K
SLoC
syn-serde
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.
License
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.
Dependencies
~0.3–1MB
~24K SLoC