rust/library/alloc/src/collections
Guillaume Boisseau e3c0158788
Rollup merge of #120504 - kornelski:try_with_capacity, r=Amanieu
Vec::try_with_capacity

Related to #91913

Implements try_with_capacity for `Vec`, `VecDeque`, and `String`. I can follow it up with more collections if desired.

`Vec::try_with_capacity()` is functionally equivalent to the current stable:

```rust
let mut v = Vec::new();
v.try_reserve_exact(n)?
```

However, `try_reserve` calls non-inlined `finish_grow`, which requires old and new `Layout`, and is designed to reallocate memory. There is benefit to using `try_with_capacity`, besides syntax convenience, because it generates much smaller code at the call site with a direct call to the allocator. There's codegen test included.

It's also a very desirable functionality for users of `no_global_oom_handling` (Rust-for-Linux), since it makes a very commonly used function available in that environment (`with_capacity` is used much more frequently than all `(try_)reserve(_exact)`).
2024-03-09 21:40:06 +01:00
..
binary_heap Add rustc_confusables annotations to some stdlib APIs 2024-02-22 18:04:55 +00:00
btree Add #[inline] to BTreeMap::new constructor 2024-03-06 19:14:03 +01:00
linked_list s/drain_filter/extract_if/ for Vec, Btree{Map,Set} and LinkedList 2023-06-14 09:28:54 +02:00
vec_deque try_with_capacity for Vec, VecDeque, String 2024-03-01 18:24:02 +00:00
linked_list.rs Add rustc_confusables annotations to some stdlib APIs 2024-02-22 18:04:55 +00:00
mod.rs Add proper cfgs 2023-11-28 09:02:34 +08:00