Add guarantee that Vec::default() does not alloc#100872
Add guarantee that Vec::default() does not alloc#100872bors merged 1 commit intorust-lang:masterfrom
Conversation
Currently `Vec::new()` is guaranteed to not allocate until elements are pushed onto the `Vec`, but such a guarantee is missing for `Vec`'s implementation of `Default::default`. This adds such a guarantee for `Vec::default()` to the API reference.
|
Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @joshtriplett (or someone else) soon. Please see the contribution instructions for more information. |
|
Hey! It looks like you've submitted a new PR for the library teams! If this PR contains changes to any Examples of
|
|
@rustbot label +T-libs-api -T-libs |
|
LGTM! Thanks for the PR. I am going to approve this (even though I am a compiler contributor) because I don't believe that such a guarantee would be unwanted as it would be a performance regression if it actually allocated. @bors r+ rollup=always |
|
Wouldn't it maybe make more sense to just guarantee that it always matches |
I considered that too. It's a slightly stronger guarantee and not sure if it's needed. Maybe |
…=fee1-dead Add guarantee that Vec::default() does not alloc Currently `Vec::new()` is guaranteed to not allocate until elements are pushed onto the `Vec`, but such a guarantee is missing for `Vec`'s implementation of `Default::default`. This adds such a guarantee for `Vec::default()` to the API reference. See also [this discussion on URLO](https://users.rust-lang.org/t/guarantee-that-vec-default-does-not-allocate/79903).
Rollup of 8 pull requests Successful merges: - rust-lang#98200 (Expand potential inner `Or` pattern for THIR) - rust-lang#99770 (Make some const prop mir-opt tests `unit-test`s) - rust-lang#99957 (Rework Ipv6Addr::is_global to check for global reachability rather than global scope - rebase) - rust-lang#100331 (Guarantee `try_reserve` preserves the contents on error) - rust-lang#100336 (Fix two const_trait_impl issues) - rust-lang#100713 (Convert diagnostics in parser/expr to SessionDiagnostic) - rust-lang#100820 (Use pointer `is_aligned*` methods) - rust-lang#100872 (Add guarantee that Vec::default() does not alloc) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
|
@rust-lang/libs-api I'm confident this is uncontroversial, but technically it's a new guarantee. Are you fine with this going in via just an |
|
This is fine without FCP, |
Currently
Vec::new()is guaranteed to not allocate until elements are pushed onto theVec, but such a guarantee is missing forVec's implementation ofDefault::default.This adds such a guarantee for
Vec::default()to the API reference.See also this discussion on URLO.