全局

  • const 值始终内联并且在内存中没有地址。
  • static 值永远不会内联,并且有一个具有固定地址的实例。
  • static mut 值不是内存安全的,因此只能在 unsafe 块中访问。
  • 有时在多线程代码中使用全局静态可变变量可能很危险,因此请考虑使用 std::sync::Mutex 或其他替代方法
  • lazy_static 对象是不可变的,只初始化一次,在所有线程之间共享,并且可以直接访问(不涉及包装器类型)。相比之下,thread_local 对象是可变的,每个线程初始化一次,访问是间接的(涉及包装类型 LocalKey<T>