From 15e6fc0a5dbbb091f8052848fc0a28ff1dd3e0dc Mon Sep 17 00:00:00 2001 From: Kornel Date: Sun, 17 Nov 2024 21:56:32 +0000 Subject: [PATCH] Document alternatives to `static mut` --- std/src/keyword_docs.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/std/src/keyword_docs.rs b/std/src/keyword_docs.rs index 30d43c8bbfd8c..4302e24781ee8 100644 --- a/std/src/keyword_docs.rs +++ b/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 {}