diff options
Diffstat (limited to 'zotapi-derive/src/lib.rs')
-rw-r--r-- | zotapi-derive/src/lib.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/zotapi-derive/src/lib.rs b/zotapi-derive/src/lib.rs new file mode 100644 index 0000000..ff44c9c --- /dev/null +++ b/zotapi-derive/src/lib.rs @@ -0,0 +1,20 @@ +use proc_macro::{self, TokenStream}; +use quote::*; +use syn::DeriveInput; + +#[proc_macro_derive(ZotAPI)] +pub fn zotapi_derive(input: TokenStream) -> TokenStream { + let ast = syn::parse(input).unwrap(); + impl_zotapi_derive(&ast) +} + +fn impl_zotapi_derive(ast: &DeriveInput) -> TokenStream { + let name = &ast.ident; // The identifier of the struct we're called for + let out_name = format_ident!("{}Request", name); + + let gen = quote! { + impl ZotAPI<#out_name> for #name { + } + }; + gen.into() +} |