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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
#![recursion_limit = "256"] #![allow(non_snake_case)] #![allow(unused_variables)] extern crate proc_macro; extern crate syn; mod audio; mod filter; mod load; use crate::audio::impl_audio_trait; use crate::filter::impl_filter_trait; use crate::filter::impl_filter_type_trait; use crate::load::impl_load_trait; use proc_macro::TokenStream; #[proc_macro_derive(AudioExt)] pub fn audio_source_trait_macro(input: TokenStream) -> TokenStream { let ast = syn::parse(input).unwrap(); impl_audio_trait(&ast) } #[proc_macro_derive(LoadExt)] pub fn load_trait_macro(input: TokenStream) -> TokenStream { let ast = syn::parse(input).unwrap(); impl_load_trait(&ast) } #[proc_macro_derive(FilterExt)] pub fn filter_trait_macro(input: TokenStream) -> TokenStream { let ast = syn::parse(input).unwrap(); impl_filter_trait(&ast) } #[proc_macro_derive(FilterAttr)] pub fn filter_type_trait_macro(input: TokenStream) -> TokenStream { let ast = syn::parse(input).unwrap(); impl_filter_type_trait(&ast) } #[cfg(test)] mod tests { #[test] fn it_works() { assert_eq!(2 + 2, 4); } }