1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
extern crate proc_macro; mod pod; mod kstr; use proc_macro::{TokenStream}; macro_rules! pod { ($fn:ident, $name:ident, $internal:expr) => { #[proc_macro_derive($name)] pub fn $fn(input: TokenStream) -> TokenStream { pod::derive(input, $internal) } } } pod!(pod, Pod, true); pod!(pod_pub, PodPub, false); macro_rules! kstr { ($name:ident, $internal:expr) => { #[proc_macro] pub fn $name(input: TokenStream) -> TokenStream { kstr::transform(input, $internal) } } } kstr!(kstr, true); kstr!(kstr_pub, false);