rust-decl-macro-p5~> 卫生性
<~~ 发表日期:2021-10-16 | 访问量:  | 本文词数:171 | 预计阅读时间:1分钟 ~~>

本节将介绍宏的 卫生性(hygienic)

同系列传送门:

开篇

什么是 卫生性(Hygienic) 呢? 简单来说,就是标识符(ident)在宏的处理与展开时,是无歧义的,不被同名标识符污染
如果你是第一次接触此概念, 我不信你不会懵逼
不过实际上, 这个概念理解起来不算困难

让我们先来讨论一个问题, 请看下面的代码:

macro_rules! create_var {
	() => {
		let a = 1;
	};
}
fn main() {
	create_var!();
	println!("{}",a);
}

你可以复制该段代码, 然后运行, 将得到一个编译错误, 提示找不到a