本节将介绍宏的 卫生性(hygienic)
同系列传送门:
什么是 卫生性(Hygienic) 呢? 简单来说,就是标识符(ident)在宏的处理与展开时,是无歧义的,不被同名标识符污染
如果你是第一次接触此概念, 我不信你不会懵逼
不过实际上, 这个概念理解起来不算困难
让我们先来讨论一个问题, 请看下面的代码:
macro_rules! create_var {
() => {
let a = 1;
};
}
fn main() {
create_var!();
println!("{}",a);
}
你可以复制该段代码, 然后运行, 将得到一个编译错误, 提示找不到a