26 lines
912 B
Rust
26 lines
912 B
Rust
use darling::{FromMeta, ast::NestedMeta};
|
|
use proc_macro::TokenStream as TokenStream1;
|
|
use quote::ToTokens;
|
|
|
|
mod cdef;
|
|
mod metatype;
|
|
mod utils;
|
|
|
|
#[proc_macro_attribute]
|
|
pub fn cdef(args: TokenStream1, input: TokenStream1) -> TokenStream1 {
|
|
NestedMeta::parse_meta_list(args.into())
|
|
.and_then(|meta| cdef::Args::from_list(&meta).map_err(Into::into))
|
|
.and_then(|args| cdef::transform(args, syn::parse(input)?))
|
|
.unwrap_or_else(|err| err.into_compile_error().into_token_stream())
|
|
.into()
|
|
}
|
|
|
|
#[proc_macro_attribute]
|
|
pub fn metatype(args: TokenStream1, input: TokenStream1) -> TokenStream1 {
|
|
NestedMeta::parse_meta_list(args.into())
|
|
.and_then(|meta| metatype::Args::from_list(&meta).map_err(Into::into))
|
|
.and_then(|args| metatype::transform(args, syn::parse(input)?))
|
|
.unwrap_or_else(|err| err.into_compile_error().into_token_stream())
|
|
.into()
|
|
}
|