0

理想的には、複数の型に対して変換するための繰り返し可能な 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)
}
4

1 に答える 1