summary refs log tree commit diff
path: root/library
diff options
context:
space:
mode:
authorKornel <kornel@geekhood.net>2024-11-17 21:56:32 +0000
committerKornel <kornel@geekhood.net>2024-11-18 00:34:06 +0000
commit8b43a7ee5dc159dd24924150fd499e5961378113 (patch)
tree0ab9130d381a427375d898e985e2727cbaadb7a3 /library
parent5ec7d6eee7e0f5236ec1559499070eaf836bc608 (diff)
downloadrust-8b43a7ee5dc159dd24924150fd499e5961378113.tar.gz
rust-8b43a7ee5dc159dd24924150fd499e5961378113.zip
Document alternatives to `static mut`
Diffstat (limited to 'library')
-rw-r--r--library/std/src/keyword_docs.rs6
1 files changed, 6 insertions, 0 deletions
diff --git a/library/std/src/keyword_docs.rs b/library/std/src/keyword_docs.rs
index 30d43c8bbfd..4302e24781e 100644
--- a/library/std/src/keyword_docs.rs
+++ b/library/std/src/keyword_docs.rs
@@ -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 {}