Skip to content

Commit

Permalink
Rollup merge of #82645 - rkjnsn:patch-3, r=Mark-Simulacrum
Browse files Browse the repository at this point in the history
Clarify that SyncOnceCell::set blocks.

Reading the discussion of this feature, I gained the mistaken impression that neither `set` nor `get` blocked, and thus calling `get` immediately after `set` was not guaranteed to succeed. It turns out that `set` *does* block, guaranteeing that the cell contains a value once `set` returns. This change updates the documentation to state that explicitly.

Happy to adjust the wording as desired.
  • Loading branch information
Joshua Nelson authored Mar 1, 2021
2 parents 6873831 + 2616960 commit 9a86a72
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion library/std/src/lazy.rs
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,10 @@ impl<T> SyncOnceCell<T> {

/// Sets the contents of this cell to `value`.
///
/// Returns `Ok(())` if the cell's value was updated.
/// May block if another thread is currently attempting to initialize the cell. The cell is
/// guaranteed to contain a value when set returns, though not necessarily the one provided.
///
/// Returns `Ok(())` if the cell's value was set by this call.
///
/// # Examples
///
Expand Down

0 comments on commit 9a86a72

Please sign in to comment.