在实现 proc 宏时,如何检查类型是否实现了特征?

Aug*_*sto 10 rust rust-proc-macros

我正在尝试创建一个proc-macro派生和实现结构的特征,并且我需要结构中的所有字段都实现Display

我该如何检查?

此外,我如何检查属性是否Iterator也实现了?(我想处理迭代器的项目是否也实现了显示)。

我正在使用synquote板条箱。我设法解析struct并生成实现。但对于像Vec和这样的类型Option,我想检查他们是否Iterator正确实现和处理它。

syn::Field结构具有ty我认为应该作为起点的属性,但是查看文档我无法猜测任何方法来检查此类型是否实现了某种特征。

Sol*_*cko 7

将特征边界和/或静态断言添加到生成的代码中。宏在类型信息可用之前运行,因为它们会影响类型信息。

  • 代码示例对于这个答案非常有用! (2认同)