理想的には、複数の型に対して変換するための繰り返し可能な data_loader 属性を許可する方法で、型 DieselHandler を抽出できる必要があります。
#[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)
}