全域性

  • const 值始終內聯並且在記憶體中沒有地址。
  • static 值永遠不會內聯,並且有一個具有固定地址的例項。
  • static mut 值不是記憶體安全的,因此只能在 unsafe 塊中訪問。
  • 有時在多執行緒程式碼中使用全域性靜態可變變數可能很危險,因此請考慮使用 std::sync::Mutex 或其他替代方法
  • lazy_static 物件是不可變的,只初始化一次,在所有執行緒之間共享,並且可以直接訪問(不涉及包裝器型別)。相比之下,thread_local 物件是可變的,每個執行緒初始化一次,訪問是間接的(涉及包裝型別 LocalKey<T>