4.6 静态变量
06-静态变量 — Comprehensive Rust
1分钟内可阅读完
译文 · 基于 Comprehensive Rust
原文链接: https://google.github.io/comprehensive-rust/user-defined-types/static.html
4.6 静态变量
静态变量在整个程序执行期间都存在,因此不会移动:
| |
如 Rust RFC Book 所述,静态变量在使用时不会被内联,而是有实际的关联内存位置。这对 unsafe 与嵌入式代码很有用,且该变量贯穿整个程序执行期。当全局作用域的值没有需要对象身份(object identity)的理由时,通常更推荐使用 const。
static类似于 C++ 中的可变全局变量。static提供对象身份:内存中的地址,以及如Mutex<T>等具有内部可变性(interior mutability)的类型所需的状态。延伸阅读
因为
static变量可从任意线程访问,它们必须是Sync的。 内部可变性可通过Mutex、原子类型或类似机制实现。常见做法是在
static中使用OnceLock,以支持首次使用时初始化。OnceCell不是Sync,因此不能用在这种场景。线程局部数据可用宏
std::thread_local创建。