我需要能够提取类型 DieselHandler,理想情况下,以允许可重复的 data_loader 属性来针对多种类型进行转换的方式。
#[derive(Loadable)]
#[data_loader(handler = DieselHandler<FooLoader>)]
如果我使用handler: syn::Type
有错误:
特征界限
syn::Type: FromMeta
不满足 特征FromMeta
未实现syn::Type
我怎样才能在这里传递一个类型,甚至可以检查包装器结构?
#[derive(Debug, FromDeriveInput)]
#[darling(attributes(data_loader))]
struct LoadByArgs {
#[darling(default)]
internal: bool,
handler: ????,
}
#[proc_macro_derive(Loadable, attributes(data_loader))]
pub fn load_by(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
let input = parse_macro_input!(input as DeriveInput);
let LoadByArgs {
internal, handler
} = FromDeriveInput::from_derive_input(&input).expect("can't parse attribute");
let expanded = quote! {
...
};
proc_macro::TokenStream::from(expanded)
}