Rust 程式設計影片教程(進階)——029_2 宣告宏

linghuyichong發表於2020-02-26

頭條地址:https://www.ixigua.com/i677586170644791348...
B站地址:https://www.bilibili.com/video/av81202308/

github地址:https://github.com/anonymousGiga/learn_rus...

使用marco_rules!的宣告宏
例子1:

let v = vec![1, 2, 3];//vec!就是用marco_rules!的宣告宏

例子2:
(1)mkdir learn_marco1
(2)cd learn_marco1
(3)vim Cargo.toml,編輯工作空間:

[workspace]
members = [
    "mac",
    "main",
]

(4)cargo new mac –lib
(5)編輯mac/src/lib.rs:

#[macro_export]
macro_rules! my_vec {
    ( $( $x:expr ),* ) => {
        {
            let mut temp_vec = Vec::new();
            $(
                temp_vec.push($x);
            )*
            temp_vec
        }
    };
}

(6)cargo new main
(7)編輯main/Cargo.toml新增:

[dependencies]
mac = {path = "../mac"}

(8)編輯main/src/main.rs如下:

use mac;
fn main() {
    let v = mac::my_vec![1, 2, 3];
    println!("v = {:?}", v);
    println!("Hello, world!");
}

說明:在上面的例子中定義了宣告宏,並在main中進行使用。宏中的程式碼等價於如下

let mut temp_vec = Vec::new();
temp_vec.push(1);
temp_vec.push(2);
temp_vec.push(3);
temp_vec
本作品採用《CC 協議》,轉載必須註明作者和本文連結
令狐一衝

相關文章