我有一个proc-macro库,其中包含一个宏,在展开时需要使用Rust内置类型的自定义trait实现。我尝试在同一个库中定义该trait,但是Rust告诉我proc-macro库只能有公共宏(用
所以我想知道是否有一种方法可以向proc-macro库添加公共trait,或以某种方式使proc-macro和trait库链接在一起,以便最终用户无法仅使用其中一个?如果两者都不可能,唯一的解决方案就是记录依赖关系,这有点脆弱。
#[proc_macro]
注释的函数),除此之外不能有其他公共内容。因此,我将该trait放入另一个库中,并在proc-macro库中将其作为依赖项包含进来。但这意味着任何想要使用我的proc-macro库的人也必须依赖于其他trait库。所以我想知道是否有一种方法可以向proc-macro库添加公共trait,或以某种方式使proc-macro和trait库链接在一起,以便最终用户无法仅使用其中一个?如果两者都不可能,唯一的解决方案就是记录依赖关系,这有点脆弱。
proc-macro-crate
是一个有用的工具,可以获取完全限定路径,以防用户别名该 crate。 - Mingwei Samuel