Proposal
Problem / Motivation / Solution
There already is a PR: rust-lang/rust#106854
Motivation
The functionality provided by this new “method” on Arc was previously not archievable with the Arc API. The function into_inner is related to try_unwrap. The expression Arc::into_inner(x) is almost the same as Arc::try_unwrap(x).ok(), however the latter includes two steps, the try_unwrap call and dropping the Arc, whereas into_inner accesses the Arc atomically. Since this is an issue in multi-threaded settings only, a similar function on Rc is not strictly necessary but could be wanted nontheless for ergonomic and API-similarity reasons. (The existing PR currently only offers the function on Arc eventually adding an analogue for Rc can be reasonable.)
The function Arc::into_inner(this: Arc<T>) -> Option<T> offers a way to “drop” an Arc without calling the destructor on the contained type. When the Arc provided was the last strong pointer to its target, the target value is returned. Being able to do this is valueable around linear(-ish) types that should not or cannot just be dropped ordinarity, but require extra arguments, or operations that can fail or are async to properly get rid of.
Rendered Documentation

Links and related work
Some time ago, there was a discussion on IRLO.
Current PR: rust-lang/rust#106854
Two previous PRs closed due to me being inactive: rust-lang/rust#79665, rust-lang/rust#75911
What happens now?
This issue is part of the libs-api team API change proposal process. Once this issue is filed the libs-api team will review open proposals in its weekly meeting. You should receive feedback within a week or two.
Proposal
Problem / Motivation / Solution
There already is a PR: rust-lang/rust#106854
Motivation
The functionality provided by this new “method” on
Arcwas previously not archievable with theArcAPI. The functioninto_inneris related totry_unwrap. The expressionArc::into_inner(x)is almost the same asArc::try_unwrap(x).ok(), however the latter includes two steps, thetry_unwrapcall and dropping theArc, whereasinto_inneraccesses theArcatomically. Since this is an issue in multi-threaded settings only, a similar function onRcis not strictly necessary but could be wanted nontheless for ergonomic and API-similarity reasons. (The existing PR currently only offers the function onArceventually adding an analogue forRccan be reasonable.)The function
Arc::into_inner(this: Arc<T>) -> Option<T>offers a way to “drop” anArcwithout calling the destructor on the contained type. When theArcprovided was the last strong pointer to its target, the target value is returned. Being able to do this is valueable around linear(-ish) types that should not or cannot just be dropped ordinarity, but require extra arguments, or operations that can fail or areasyncto properly get rid of.Rendered Documentation
Links and related work
Some time ago, there was a discussion on IRLO.
Current PR: rust-lang/rust#106854
Two previous PRs closed due to me being inactive: rust-lang/rust#79665, rust-lang/rust#75911
What happens now?
This issue is part of the libs-api team API change proposal process. Once this issue is filed the libs-api team will review open proposals in its weekly meeting. You should receive feedback within a week or two.