在Rust中声明变量的宏?

时间:2016-08-05 00:58:14

标签: macros rust

在C中可以编写一个声明变量的宏,如下所示:

instance

当然,这并不是您通常想要做的事情。

在实际例子中,我希望得到它的工作并不那么简单。

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

然而,就这个问题而言,转让的具体细节并不重要。

是否可以在Rust中编写这样的宏? 如果是这样,怎么写?

1 个答案:

答案 0 :(得分:2)

可以在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);
}

阅读Macros chapter in the book了解更多信息。