Skip to content

Commit

Permalink
Auto merge of rust-lang#124432 - zetanumbers:non_copy_into_raw_with_a…
Browse files Browse the repository at this point in the history
…lloc, r=Nilstrieb

Relax `A: Clone` bound for `rc::Weak::into_raw_and_alloc`

Makes this method to behave the same way as [`Box::into_raw_with_allocator`](https://doc.rust-lang.org/1.77.2/alloc/boxed/struct.Box.html#method.into_raw_with_allocator) and [`Vec::into_raw_parts_with_alloc`](https://doc.rust-lang.org/1.77.2/alloc/vec/struct.Vec.html#method.into_raw_parts_with_alloc).

I have also noticed the inconsistent presence and naming, should probably be addressed in the future.
  • Loading branch information
bors committed Apr 27, 2024
2 parents 261823e + 255a1e9 commit 61a1dbd
Showing 1 changed file with 4 additions and 7 deletions.
11 changes: 4 additions & 7 deletions library/alloc/src/rc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3029,13 +3029,10 @@ impl<T: ?Sized, A: Allocator> Weak<T, A> {
/// [`as_ptr`]: Weak::as_ptr
#[inline]
#[unstable(feature = "allocator_api", issue = "32838")]
pub fn into_raw_and_alloc(self) -> (*const T, A)
where
A: Clone,
{
let result = self.as_ptr();
let alloc = self.alloc.clone();
mem::forget(self);
pub fn into_raw_and_alloc(self) -> (*const T, A) {
let rc = mem::ManuallyDrop::new(self);
let result = rc.as_ptr();
let alloc = unsafe { ptr::read(&rc.alloc) };
(result, alloc)
}

Expand Down

0 comments on commit 61a1dbd

Please sign in to comment.