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}