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