Rust編程進階:080、類屬性宏和類函數宏

6、類屬性宏
類屬性宏與自定義派生宏相似,不同於爲 derive 屬性生成代碼,它們允許你創建新的屬性。

例子:
可以創建一個名爲 route 的屬性用於註解 web 應用程序框架(web application framework)的函數:
#[route(GET, "/")]
fn index() {

#[route] 屬性將由框架本身定義爲一個過程宏。其宏定義的函數簽名看起來像這樣:
#[proc_macro_attribute]
pub fn route(attr: TokenStream, item: TokenStream) -> TokenStream {

說明:類屬性宏其它工作方式和自定義derive宏工作方式一致。

7、類函數宏
類函數宏定義看起來像函數調用的宏。類似於 macro_rules!,它們比函數更靈活。
例子:
如sql!宏,使用方式爲:
let sql = sql!(SELECT * FROM posts WHERE id=1);
則其定義爲:
#[proc_macro]
pub fn sql(input: TokenStream) -> TokenStream {

8、宏的資料推薦
https://danielkeep.github.io/tlborm/book/mbe-macro-rules.html
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章