1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
extern crate proc_macro;
use proc_macro::TokenStream;
use quote::quote;

#[proc_macro_attribute]
pub fn register_ccp_alg(_attr: TokenStream, item: TokenStream) -> TokenStream {
    let alg_struct = syn::parse_macro_input!(item as syn::ItemStruct);
    let alg_struct_name = &alg_struct.ident;
    let result = quote! {
        #alg_struct
        pub type __ccp_alg_export = #alg_struct_name;
    };
    result.into()
}