1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#![feature(proc_macro)] extern crate proc_macro; extern crate mockers_codegen; use proc_macro::TokenStream; #[proc_macro_attribute] pub fn derive_mock(_attr: TokenStream, input: TokenStream) -> TokenStream { let item = format!("#[derive(Mock)]\n{}", input); let expanded = mockers_codegen::expand_str(&item).unwrap(); expanded.parse().unwrap() } #[proc_macro] pub fn mock(input: TokenStream) -> TokenStream { let item = format!("mock!{{\n{}\n}}", input); let expanded = mockers_codegen::expand_str(&item).unwrap(); expanded.parse().unwrap() }