demo_hack_impl/lib.rs
1extern crate proc_macro;
2extern crate proc_macro_hack;
3extern crate quote;
4extern crate syn;
5
6use proc_macro::TokenStream;
7use proc_macro_hack::proc_macro_hack;
8use quote::quote;
9use syn::{parse_macro_input, Expr};
10
11/// Add one to an expression.
12#[proc_macro_hack]
13pub fn add_one(input: TokenStream) -> TokenStream {
14 let expr = parse_macro_input!(input as Expr);
15 TokenStream::from(quote! {
16 1 + (#expr)
17 })
18}