Skip to content

Commit 2fc257c

Browse files
committed
Prefer ManuallyDrop::{take,new} over ptr::{read,write}
1 parent 9c1ad0f commit 2fc257c

File tree

2 files changed

+4
-3
lines changed

2 files changed

+4
-3
lines changed

src/libstd/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,7 @@
275275
#![feature(link_args)]
276276
#![feature(linkage)]
277277
#![feature(log_syntax)]
278+
#![feature(manually_drop_take)]
278279
#![feature(maybe_uninit_ref)]
279280
#![feature(maybe_uninit_slice)]
280281
#![feature(mem_take)]

src/libstd/panicking.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ use crate::any::Any;
1313
use crate::fmt;
1414
use crate::intrinsics;
1515
use crate::mem::{self, ManuallyDrop};
16-
use crate::ptr;
1716
use crate::raw;
1817
use crate::sync::atomic::{AtomicBool, Ordering};
1918
use crate::sys::stdio::panic_output;
@@ -283,8 +282,9 @@ pub unsafe fn r#try<R, F: FnOnce() -> R>(f: F) -> Result<R, Box<dyn Any + Send>>
283282
fn do_call<F: FnOnce() -> R, R>(data: *mut u8) {
284283
unsafe {
285284
let data = data as *mut Data<F, R>;
286-
let f = ptr::read(&mut *(*data).f);
287-
ptr::write(&mut *(*data).r, f());
285+
let data = &mut (*data);
286+
let f = ManuallyDrop::take(&mut data.f);
287+
data.r = ManuallyDrop::new(f());
288288
}
289289
}
290290
}

0 commit comments

Comments
 (0)