3
我注意到編譯插件經常提供文檔甚至不提及的宏。它們以編程方式註冊和創建,而不是在rustdoc識別的語法中定義。當然,沒有文檔可以顯示。記錄項目rustdoc看不到
我正在尋找一種方法來解決這個問題,一些生成文檔的方法在編譯時並不存在於箱子中。
我注意到語法箱子也可以從這樣的事情中受益。例如,quote_item
完全沒有記錄。我甚至找不到註冊它的代碼。
我注意到編譯插件經常提供文檔甚至不提及的宏。它們以編程方式註冊和創建,而不是在rustdoc識別的語法中定義。當然,沒有文檔可以顯示。記錄項目rustdoc看不到
我正在尋找一種方法來解決這個問題,一些生成文檔的方法在編譯時並不存在於箱子中。
我注意到語法箱子也可以從這樣的事情中受益。例如,quote_item
完全沒有記錄。我甚至找不到註冊它的代碼。
一種可能性是做什麼the compiler does:創建一個空的macro_rules!
宏並附上文檔。例如。如果一箱定義foo
,需要一個單一的表達,然後寫類似
/// Documentation
#[macro_export]
macro_rules! foo {
($e: expr) => ({ /* syntax extension */ })
}
我注意到語法箱可以從這樣的事情中受益。例如,quote_item完全沒有記錄。我甚至找不到註冊它的代碼。
你可以search the Rust source for quote_item
,這有兩個原因有幫助:它提供了一些例子,並且還允許你追蹤定義。後者使用Rust's DXR instance更容易,它可以用引號(即可以找到字符串)搜索事物,並且包括各種源代碼導航技巧(如跳轉到定義)。
很酷。疑難解答提示:如果您定義了空宏並在同一個箱子中調用它們,那麼它將調用空的宏而不是由編譯器插件註冊的宏,這與您想要的相反。不要驚慌。一旦在調用站點的單獨的包中定義了空的宏,程序宏將按預期調用。 – mako