Rollup merge of #120266 - steffahn:a_rc_into_inner_docs, r=Mark-Simulacrum
Improve documentation for [A]Rc::into_inner General improvements, and also aims to better encourage the reader to actually check out Arc::try_unwrap. This addresses concerns from https://github.com/rust-lang/rust/issues/106894#issuecomment-1905627234. Rendered:  
This commit is contained in:
commit
4528b37196
@ -939,8 +939,11 @@ impl<T, A: Allocator> Rc<T, A> {
|
|||||||
/// it is guaranteed that exactly one of the calls returns the inner value.
|
/// it is guaranteed that exactly one of the calls returns the inner value.
|
||||||
/// This means in particular that the inner value is not dropped.
|
/// This means in particular that the inner value is not dropped.
|
||||||
///
|
///
|
||||||
/// This is equivalent to `Rc::try_unwrap(this).ok()`. (Note that these are not equivalent for
|
/// [`Rc::try_unwrap`] is conceptually similar to `Rc::into_inner`.
|
||||||
/// [`Arc`](crate::sync::Arc), due to race conditions that do not apply to `Rc`.)
|
/// And while they are meant for different use-cases, `Rc::into_inner(this)`
|
||||||
|
/// is in fact equivalent to <code>[Rc::try_unwrap]\(this).[ok][Result::ok]()</code>.
|
||||||
|
/// (Note that the same kind of equivalence does **not** hold true for
|
||||||
|
/// [`Arc`](crate::sync::Arc), due to race conditions that do not apply to `Rc`!)
|
||||||
#[inline]
|
#[inline]
|
||||||
#[stable(feature = "rc_into_inner", since = "1.70.0")]
|
#[stable(feature = "rc_into_inner", since = "1.70.0")]
|
||||||
pub fn into_inner(this: Self) -> Option<T> {
|
pub fn into_inner(this: Self) -> Option<T> {
|
||||||
|
@ -983,9 +983,13 @@ impl<T, A: Allocator> Arc<T, A> {
|
|||||||
/// it is guaranteed that exactly one of the calls returns the inner value.
|
/// it is guaranteed that exactly one of the calls returns the inner value.
|
||||||
/// This means in particular that the inner value is not dropped.
|
/// This means in particular that the inner value is not dropped.
|
||||||
///
|
///
|
||||||
/// The similar expression `Arc::try_unwrap(this).ok()` does not
|
/// [`Arc::try_unwrap`] is conceptually similar to `Arc::into_inner`, but it
|
||||||
/// offer such a guarantee. See the last example below
|
/// is meant for different use-cases. If used as a direct replacement
|
||||||
/// and the documentation of [`Arc::try_unwrap`].
|
/// for `Arc::into_inner` anyway, such as with the expression
|
||||||
|
/// <code>[Arc::try_unwrap]\(this).[ok][Result::ok]()</code>, then it does
|
||||||
|
/// **not** give the same guarantee as described in the previous paragraph.
|
||||||
|
/// For more information, see the examples below and read the documentation
|
||||||
|
/// of [`Arc::try_unwrap`].
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
|
Loading…
x
Reference in New Issue
Block a user