簡體   English   中英

在Rust中聲明變量的宏?

[英]Macro that declare variables in Rust?

在C中可以編寫一個聲明變量的宏,如下所示:

#define VARS(a, b, c) \
    int a, b, c;

當然,這不是您通常想要執行的操作。

在實際示例中,我希望使其工作起來不是那么簡單。

#define VARS(data, stride, a, b, c) \
    MyStruct *a = &data.array[0],            \
    MyStruct *b = &data.array[1 * (stride)], \
    MyStruct *c = &data.array[2 * (stride)];

但是,對於這個問題,確切的分配細節並不重要。

是否可以在Rust中編寫這樣的宏? 如果是這樣,如何寫?

可以在Rust中編寫這樣的宏:

macro_rules! vars {
    ($data:expr, $stride:expr, $var1:ident, $var2:ident, $var3:ident) => {
        let $var1 = $data[0];
        let $var2 = $data[1 * $stride];
        let $var3 = $data[2 * $stride];
    };
}

fn main() {
    let array = [1, 2, 3, 4, 5];
    let stride = 2;
    vars!(array, stride, a, b, c);
    println!("{}", a);
    println!("{}", b);
    println!("{}", c);
}

閱讀本書中的“宏”一章以獲取更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM