metaprogramming
下一個進階的 Rust 使用方式:
macro
。跟大多數語言一樣 rust 也有支援
preprocessor
或者稱為
metaprogramming
,也就是程式在執行之前預先根據邏輯產生新的程式碼,而在 rust 中則是使用
macro_rules!
來定義。跟 C/C++ 的 preprocessor 不一樣 rust 是透過展開成為
AST (Abstract syntax tree)
,因此不會產生預期以外的優先順序 bug。使用 macro 的時機大致上分為幾種:1) 重複性的代碼、2)可變動的參數與 3) 特定領域的語言。