about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLukas Lueg <lukas.lueg@gmail.com>2022-09-03 21:48:17 +0200
committerLukas Lueg <lukas.lueg@gmail.com>2022-09-03 21:48:17 +0200
commit2c664bcbfbd31882a4b2a32f8058cc25e378186c (patch)
tree74b252042fc8c0ccac6a7cd1dcb8dbfdceffd6b4
parentae0030beb0398cabb2626fe326d6b2e8286c70b9 (diff)
downloadrust-2c664bcbfbd31882a4b2a32f8058cc25e378186c.tar.gz
rust-2c664bcbfbd31882a4b2a32f8058cc25e378186c.zip
Tone down explanation on RefCell::get_mut
-rw-r--r--library/core/src/cell.rs21
1 files changed, 12 insertions, 9 deletions
diff --git a/library/core/src/cell.rs b/library/core/src/cell.rs
index fb4454c94cb..1abbb39497a 100644
--- a/library/core/src/cell.rs
+++ b/library/core/src/cell.rs
@@ -1021,15 +1021,18 @@ impl<T: ?Sized> RefCell<T> {
 
     /// Returns a mutable reference to the underlying data.
     ///
-    /// This call borrows `RefCell` mutably (at compile-time) so there is no
-    /// need for dynamic checks.
-    ///
-    /// However be cautious: this method expects `self` to be mutable, which is
-    /// generally not the case when using a `RefCell`. Take a look at the
-    /// [`borrow_mut`] method instead if `self` isn't mutable.
-    ///
-    /// Also, please be aware that this method is only for special circumstances and is usually
-    /// not what you want. In case of doubt, use [`borrow_mut`] instead.
+    /// Since this method borrows `RefCell` mutably, it is statically guaranteed
+    /// that no borrows to the underlying data exist. The dynamic checks inherent
+    /// in [`borrow_mut`] and most other methods of `RefCell` are therefor
+    /// unnecessary.
+    ///
+    /// This method can only be called if `RefCell` can be mutably borrowed,
+    /// which in general is only the case directly after the `RefCell` has
+    /// been created. In these situations, skipping the aforementioned dynamic
+    /// borrowing checks may yield better ergonomics and runtime-performance.
+    ///
+    /// In most situations where `RefCell` is used, it can't be borrowed mutably.
+    /// Use [`borrow_mut`] to get mutable access to the underlying data then.
     ///
     /// [`borrow_mut`]: RefCell::borrow_mut()
     ///