enterprise/syn-serde
2020-02-17 06:09:45 -06:00
..
.github woops 2020-02-17 06:09:45 -06:00
ci woops 2020-02-17 06:09:45 -06:00
codegen woops 2020-02-17 06:09:45 -06:00
examples woops 2020-02-17 06:09:45 -06:00
src woops 2020-02-17 06:09:45 -06:00
tests woops 2020-02-17 06:09:45 -06:00
.editorconfig woops 2020-02-17 06:09:45 -06:00
.gitattributes woops 2020-02-17 06:09:45 -06:00
.gitignore woops 2020-02-17 06:09:45 -06:00
Cargo.toml woops 2020-02-17 06:09:45 -06:00
CHANGELOG.md woops 2020-02-17 06:09:45 -06:00
LICENSE-APACHE woops 2020-02-17 06:09:45 -06:00
LICENSE-MIT woops 2020-02-17 06:09:45 -06:00
README.md woops 2020-02-17 06:09:45 -06:00
syn.json woops 2020-02-17 06:09:45 -06:00

syn-serde

crates-badge docs-badge license-badge rustc-badge

Library to serialize and deserialize Syn syntax trees.

Documentation

Usage

Add this to your Cargo.toml:

[dependencies]
syn-serde = "0.2"

The current syn-serde requires Rust 1.31 or later.

Examples

[dependencies]
syn-serde = { version = "0.2", features = ["json"] }
syn = { version = "1", 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.2 is compatible with the data structures of Syn 1.0.

License

Licensed under either of

at your option.

Contribution

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.