【Rust】巨集-標誌符
阿新 • • 發佈:2021-12-24
環境
- Rust 1.56.1
- VSCode 1.61.2
概念
參考:https://doc.rust-lang.org/rust-by-example/macros/designators.html
示例
以下是可以使用的標誌符:
block
expr
表示式ident
變數名或函式名item
literal
字面量pat
模式path
stmt
語句tt
標記樹ty
型別vis
可見性修飾符
main.rs
macro_rules! create_function { // 使用了 iden 標誌符,引數名以$開頭 ($func_name:ident) => { // 將傳入的引數名作為了函式名 fn $func_name() { // `stringify!` 將 iden 傳為字串 println!("You called {:?}()", stringify!($func_name)); } }; } // 使用巨集建立了兩個函式 create_function!(foo); create_function!(bar); macro_rules! print_result { // expr 表示表示式 ($expression:expr) => { // $expression求結果 println!("{:?} = {:?}", stringify!($expression), $expression); }; } fn main() { foo(); bar(); print_result!(1u32 + 1); print_result!({ let x = 1u32; x * x + 2 * x - 1 }); }
總結
瞭解了 Rust 中帶有引數的巨集的定義,引數可以有不同的型別。