diff options
| author | Yuki Okushi <huyuumi.dev@gmail.com> | 2020-03-20 17:02:01 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-03-20 17:02:01 +0900 |
| commit | 5d395176809c8f8a8399a8bec31bb2f6cdbf975a (patch) | |
| tree | 4b9df3ffc79987c76b7361ba158faf79a3101a51 /src/test/codegen/src-hash-algorithm/src-hash-algorithm-md5.rs | |
| parent | f4c675c476c18b1a11041193f2f59d695b126bc8 (diff) | |
| parent | 2bebe8d87111b544b8f5600fe93cc96391d5c91e (diff) | |
| download | rust-5d395176809c8f8a8399a8bec31bb2f6cdbf975a.tar.gz rust-5d395176809c8f8a8399a8bec31bb2f6cdbf975a.zip | |
Rollup merge of #69618 - hniksic:mem-forget-doc-fix, r=RalfJung
Clarify the relationship between `forget()` and `ManuallyDrop`. As discussed on reddit, this commit addresses two issues with the documentation of `mem::forget()`: * The documentation of `mem::forget()` can confuse the reader because of the discrepancy between usage examples that show correct usage and the accompanying text which speaks of the possibility of double-free. The text that says "if the panic occurs before `mem::forget` was called" refers to a variant of the second example that was never shown, modified to use `mem::forget` instead of `ManuallyDrop`. Ideally the documentation should show both variants, so it's clear what it's talking about. Also, the double free could be fixed just by placing `mem::forget(v)` before the construction of `s`. Since the lifetimes of `s` and `v` wouldn't overlap, there would be no point where panic could cause a double free. This could be mentioned, and contrasted against the more robust fix of using `ManuallyDrop`. * This sentence seems unjustified: "For some types, operations such as passing ownership (to a funcion like `mem::forget`) requires them to actually be fully owned right now [...]". Unlike C++, Rust has no move constructors, its moves are (possibly elided) bitwise copies. Even if you pass an invalid object to `mem::forget`, no harm should come to pass because `mem::forget` consumes the object and exists solely to prevent drop, so there no one left to observe the invalid state state.
Diffstat (limited to 'src/test/codegen/src-hash-algorithm/src-hash-algorithm-md5.rs')
0 files changed, 0 insertions, 0 deletions
