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:
Rust宏:从基础到高级应用全解析
超级会员免费看
订阅专栏 解锁全文
860

被折叠的 条评论
为什么被折叠?



