about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2023-12-05 14:52:43 -0500
committerGitHub <noreply@github.com>2023-12-05 14:52:43 -0500
commit6fa93e83c96ac3e52e5093687a88ef8f64bd5f47 (patch)
treefa5107fdb66bdd36efc6a9ff2dbd72f1414d1494
parentaa5f25174dfce3b445f38adff0094724542cdd16 (diff)
parent13c16e3afc09746bc0b6fd0f467c4a0f33d1dcc1 (diff)
downloadrust-6fa93e83c96ac3e52e5093687a88ef8f64bd5f47.tar.gz
rust-6fa93e83c96ac3e52e5093687a88ef8f64bd5f47.zip
Rollup merge of #118450 - marcin-serwin:master, r=workingjubilee
Use OnceCell in cell module documentation

The spanning tree example in the std cell module implementation was created before `OnceCell` was added to Rust so it uses `RefCell`. However, in this case using `OnceCell` seems more appropriate and produces simpler code. As a bonus, this also means that all three cell types are presented in the examples of std cell module.
-rw-r--r--library/core/src/cell.rs8
1 files changed, 4 insertions, 4 deletions
diff --git a/library/core/src/cell.rs b/library/core/src/cell.rs
index f10a82c5694..030040ba09a 100644
--- a/library/core/src/cell.rs
+++ b/library/core/src/cell.rs
@@ -143,17 +143,17 @@
 //!
 //! ```
 //! # #![allow(dead_code)]
-//! use std::cell::RefCell;
+//! use std::cell::OnceCell;
 //!
 //! struct Graph {
 //!     edges: Vec<(i32, i32)>,
-//!     span_tree_cache: RefCell<Option<Vec<(i32, i32)>>>
+//!     span_tree_cache: OnceCell<Vec<(i32, i32)>>
 //! }
 //!
 //! impl Graph {
 //!     fn minimum_spanning_tree(&self) -> Vec<(i32, i32)> {
-//!         self.span_tree_cache.borrow_mut()
-//!             .get_or_insert_with(|| self.calc_span_tree())
+//!         self.span_tree_cache
+//!             .get_or_init(|| self.calc_span_tree())
 //!             .clone()
 //!     }
 //!