// 宏
// 宏有两种形式:
// 声明式宏: vec!、println!、write! 这些都是声明式宏.
// 过程式宏: #[derive(Debug)]、#[derive(PartialEq)] 这些都是过程式宏.
// 声明式宏
// 可以定义一种符合当前场景的数据结构, 然后使用该宏来编写rust代码.
// 过程式宏
// 主要是为结构体、元祖等数据结构增加通用的trait公共接口和公共方法.
// 声明式宏语法
macro_rules! list {
// $x 是变量
// :expr 是关键字语法, 表示表达式
// * 表示零次或多次表达式匹配
($($x:expr), *) => {
{
let mut temp_vec = Vec::new();
$(
println!("{}", $x);
temp_vec.push($x);
)* // 多次匹配会多次运行这个代码块.
temp_vec
}
}
}
// 过程式宏语法
// 暂无
fn main() {
let x = list!(1,2,3);
println!("{:?}", x)
}
// 参考: https://doc.rust-lang.org/book/second-edition/appendix-04-macros.html
// Rust手册: https://doc.rust-lang.org/reference/macros.html
// macros book: https://danielkeep.github.io/tlborm/book/index.html
rust--宏
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...