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