You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多次调用过程宏时,全局lazy_static变量初始化一次还是多次?

问题解答

核心结论

在目标crate的单次编译过程中,这个lazy_static变量只会初始化一次。

原因分析

  • 过程宏运行在编译阶段,当你在另一个crate里多次调用该宏时,所有宏调用都处于同一个rustc编译进程的执行上下文中。
  • lazy_static的特性是在程序(此处即编译期执行宏的进程)运行期间,对全局变量做延迟初始化且保证仅初始化一次。只要编译进程未重启,无论宏被调用多少次,该全局变量都只会被初始化一次。

补充说明

如果是多个独立的编译进程(比如并行编译多个依赖该宏的crate,或者多次重新编译同一目标crate),每个进程内的lazy_static变量会各自初始化一次——这是进程隔离的自然结果,和宏的调用次数无关。

内容的提问来源于stack exchange,提问作者porton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 10:28:16