-
Notifications
You must be signed in to change notification settings - Fork 12.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Link Vec leak doc to Box #77709
Link Vec leak doc to Box #77709
Conversation
r? @sfackler (rust_highfive has picked a reviewer for you, use r? to override) |
r=me with CI passing |
I still don't quite know how to prevent memory leak from reading the docs, I found this in the release notes. |
I think the right way to avoid a leak is cc @rust-lang/wg-unsafe-code-guidelines - how do you get a |
Turning the leak back into a Vec can be tricky and dangerous. If the leak() is |
The docs do not even guarantee that If recovering from the leak is an intended feature, that would require a new guarantee currently not made by the docs. |
Got it, thanks. So I think we should document that this is not currently supported; right now it seems to imply there's a way if only you figure it out:
|
Maybe we should mention that there is no way to recover the leak unlike box? Since for box it show some methods to recover the leak but I don't see that for vec, maybe it would be good to mention it to be explicit. Sounds like a potential footgun, I feel like the function should be unsafe even though the word "leak" already feels scary enough. |
|
To elaborate on what @jyn514 said: "footgun" is not what
|
It can't cause UB but it can cause memory leak, so memory leak is safe? Yeah, I agree that causing UB is definitely unsafe but memory leak feels unsafe to me too. |
UB for Rust is defined here. Memory leaks indeed are not on that list. |
Should we clarify that memory leak won't be part of that list? |
Many things are not part of that list, listing them all could get exhausting. ;) For the PR, I agree the docs here should be clarified to say that there is no supported way to "undo the leak". |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
r=me with nit fixed
Co-authored-by: Joshua Nelson <joshua@yottadb.com>
@bors r+ rollup Thanks for the PR and starting a good discussion :) |
📌 Commit 8688fa8 has been approved by |
Link Vec leak doc to Box
Rollup of 10 pull requests Successful merges: - rust-lang#77195 (Link to documentation-specific guidelines.) - rust-lang#77629 (Cleanup of `eat_while()` in lexer) - rust-lang#77709 (Link Vec leak doc to Box) - rust-lang#77738 (fix __rust_alloc_error_handler comment) - rust-lang#77748 (Dead code cleanup in windows-gnu std) - rust-lang#77754 (Add TraitDef::find_map_relevant_impl) - rust-lang#77766 (Clarify the debug-related values should take boolean) - rust-lang#77777 (doc: disambiguate stat in MetadataExt::as_raw_stat) - rust-lang#77782 (Fix typo in error code description) - rust-lang#77787 (Update `changelog-seen` in config.toml.example) Failed merges: r? `@ghost`
No description provided.