Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Making mem::forget safe makes that point moot.

https://github.com/rust-lang/rfcs/pull/1066



Forget isn't the reason that that block is unsafe.


Right. That block is unsafe because it's doing unsafe things. (ptr::read and alloc::heap::deallocate)

But the use of Rc is kind of a red herring; if mem::forget is marked safe, then you don't need safe_forget because you can forget things (fail to execute their destructors, specifically) safely anyway.

The problem is that destructors aren't guaranteed; the bugs in the thready thing (and potentially unbounded other things) are symptoms. Drop needs big, red warning signs.

The power of a notation, and a type system, is in what it lets you not think about. The fact that destructors may not be called is, unfortunately, something you have to think about.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: