Rust宏编程入门
学习声明式宏和过程宏的基础概念与编写方法 · 难度:入门 · +15XP
宏是什么
宏(Macro)是Rust中强大的元编程工具。它允许你在编译时生成代码,减少重复。主要分为声明式宏和过程宏两类。
声明式宏(macro_rules!)
macro_rules! say_hello {
() => {
println!("Hello!");
};
($name:expr) => {
println!("Hello, {}!", $name);
};
}
fn main() {
say_hello!();
say_hello!("Rust");
}
常用元变量类型
| 类型 | 说明 |
|---|---|
| expr | 表达式 |
| ident | 标识符 |
| ty | 类型 |
| block | 代码块 |
重复模式
macro_rules! vec_of {
( $( $x:expr ),* ) => {
{
let mut v = Vec::new();
$( v.push($x); )*
v
}
};
}
fn main() {
let v = vec_of!(1, 2, 3, 4);
println!("{:?}", v);
}
练习提示:编写一个宏,接受多个表达式并返回它们的和。