28、Rust 宏:从基础到高级应用

Rust 宏:从基础到高级应用

1. 宏中的重复机制

在 Rust 中,除了处理标记树类型,我们还需要一种方法来重复生成代码的某些部分。标准库中的 vec![] 宏就是一个实际例子,它依赖重复机制来模拟可变参数,允许以多种方式创建 Vec

vec![1, 2, 3];
vec![9, 8, 7, 6, 5, 4];

以下是标准库中 vec! 宏的 macro_rules! 定义:

macro_rules! vec {
    ($elem:expr; $n:expr) =>  (
        $crate::vec::from_elem($elem, $n)
    );
    ($($x:expr),*) =>  (
        < [_]> ::into_vec(box [$($x),*])
    );
    ($($x:expr,)*) =>  (vec![$($x),*])
}

忽略 => 右侧的细节,关注左侧的后两个匹配规则,会发现新的内容:

($($x:expr),*)
($($x:expr,)*)

这些是重复规则,重复模式规则为: pattern:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值