Rollup merge of #133145 - kornelski:static-mutex, r=traviscross

Document alternatives to `static mut`

In #133143 I've noticed alternatives to `static mut` aren't documented anywhere.
This commit is contained in:
Jacob Pratt 2024-11-18 02:24:36 -05:00 committed by GitHub
commit 19c145d816
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1448,6 +1448,9 @@ mod self_upper_keyword {}
/// in a multithreaded context. As such, all accesses to mutable `static`s
/// require an [`unsafe`] block.
///
/// When possible, it's often better to use a non-mutable `static` with an
/// interior mutable type such as [`Mutex`], [`OnceLock`], or an [atomic].
///
/// Despite their unsafety, mutable `static`s are necessary in many contexts:
/// they can be used to represent global state shared by the whole program or in
/// [`extern`] blocks to bind to variables from C libraries.
@ -1468,7 +1471,10 @@ mod self_upper_keyword {}
/// [`extern`]: keyword.extern.html
/// [`mut`]: keyword.mut.html
/// [`unsafe`]: keyword.unsafe.html
/// [`Mutex`]: sync::Mutex
/// [`OnceLock`]: sync::OnceLock
/// [`RefCell`]: cell::RefCell
/// [atomic]: sync::atomic
/// [Reference]: ../reference/items/static-items.html
mod static_keyword {}