Remove the old example
1 file changed
tree: 1d361b3e2abecbfab6dccd6df7d80e41afb4daf8
  1. src/
  2. tests/
  3. .gitignore
  4. .travis.yml
  5. Cargo.toml
  6. LICENSE-APACHE
  7. LICENSE-MIT
  8. README.md
README.md

Nom parser for Rust items

Build Status Latest Version Rust Documentation

Parse Rust structs and enums without a Syntex dependency, intended for use with Macros 1.1.

Designed for fast compile time.

  • Compile time for syn (from scratch including all dependencies): 4 seconds
  • Compile time for the syntex/quasi/aster stack: 60+ seconds

Usage with Macros 1.1

[dependencies]
syn = "0.7"
quote = "0.1"

[lib]
rustc-macro = true
#![feature(rustc_macro, rustc_macro_lib)]

extern crate rustc_macro;
use rustc_macro::TokenStream;

extern crate syn;

#[macro_use]
extern crate quote;

#[rustc_macro_derive(MyMacro)]
pub fn my_macro(input: TokenStream) -> TokenStream {
    let source = input.to_string();

    // Parse a string of items to an AST
    let ast = syn::parse_macro_input(&source).unwrap();

    // Build the output, possibly using quasi-quotation
    let expanded = quote! {
        // ...
    };

    // Parse this back to a token stream and return it
    expanded.to_string().parse().unwrap()
}

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.