我想编写两个程序宏 - 一个是我的,第二个来自另一个箱子。
我想将程序宏称为普通函数。标记为#[proc_macro_derive]
的函数是公共的,但我不能从我的宏调用它:编译器找不到该函数。我认为过程宏函数仅在代码生成期间使用,并且在编译期间不存在于最终代码中。
我可以生成具有#[derive(...)]
的代码,编译器将调用第二个宏,但这种方法要求最终用户依赖第二个宏包,即使他们没有直接使用它。
有没有什么方法可以像处理令牌和返回令牌的普通函数一样调用程序宏?
答案 0 :(得分:1)
我找到了最简单案例的解决方法,其中必须在第一个程序宏之后调用第二个程序宏:
GEODESIC
。#[macro_use] extern crate ...
这样,用户只需要添加一个依赖项:包含两个过程宏的包。
如果我想对其他程序宏的输出进行后处理,我仍然不知道该怎么办。