[英]How can I call one procedural macro from another?
我想編寫兩個程序宏 - 一個是我的,第二個來自另一個箱子。
我想將程序宏稱為普通函數。 標記為#[proc_macro_derive]
的函數是公共的,但我不能從我的宏調用它:編譯器找不到該函數。 我認為過程宏函數僅在代碼生成期間使用,並且在編譯期間不存在於最終代碼中。
我可以生成具有#[derive(...)]
代碼,編譯器將調用第二個宏,但這種方法要求最終用戶依賴第二個宏包,即使他們沒有直接使用它。
有沒有什么方法可以調用一個程序宏像一個正常的函數來獲取令牌並返回令牌?
我找到了最簡單的解決方法,其中第二個過程宏必須在第一個之后調用:
#[macro_use] extern crate ...
#[derive(SecondProcMacro)]
生成代碼 這樣,用戶只需添加一個依賴項:包含兩個過程宏的包。
如果我想對其他程序宏的輸出進行后處理,我仍然不知道該怎么做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.