-
Couldn't load subscription status.
- Fork 13.9k
Closed
Description
EDIT: To summarize it a bit better, since it seems like I worded things a bit unclearly:
src's destructor doesn't get run when it's passed by-value to ptr::write, but the docs don't really make this clear. It would be better to clarify this, especially given it's an unsafe function.
#[derive(Debug)]
struct Foo(i32);
impl Drop for Foo {
fn drop(&mut self) {
println!("{:?} dropped!", self);
}
}
fn main() {
let mut dst = Foo(0);
let src = Foo(1);
unsafe { std::ptr::write(&mut dst, src); }
println!("dst = {:?}", dst);
}This code prints:
dst = Foo(1)
Foo(1) dropped!
demonstrating that the original value stored in dst, and the value passed to std::ptr::write, were not dropped; only dst was dropped after the println! line.
However, the docs for std::ptr::write only mention that the former isn't dropped, saying nothing about the latter.
Metadata
Metadata
Assignees
Labels
No labels