Stein Somers
8668e5b29e
Reverts the fundamental changes in #74762 and #75257
2020-08-13 16:29:56 +02:00
Stein Somers
ef753fc6ed
BTreeMap: better distinguish the root holder from the root node
2020-08-09 13:43:13 +02:00
Yuki Okushi
3370ac0042
Rollup merge of #75151 - pickfire:patch-4, r=LukasKalbertodt
...
Consistent variable name alloc for raw_vec
2020-08-09 06:41:18 +09:00
bors
1facd4a77b
Auto merge of #75163 - canova:map_into_keys_values, r=dtolnay
...
Implement `into_keys` and `into_values` for associative maps
This PR implements `into_keys` and `into_values` for HashMap and BTreeMap types. They are implemented as unstable, under `map_into_keys_values` feature.
Fixes #55214 .
r? @dtolnay
2020-08-08 18:15:50 +00:00
Nazım Can Altınova
4cd2637e2b
Update the tracking issue number of map_into_keys_values
2020-08-08 16:35:54 +02:00
Nazım Can Altınova
1cdce3919f
Remove min/max values from IntoValues Iterator implementation
2020-08-08 15:51:22 +02:00
bors
d19d7e2755
Auto merge of #75257 - ssomers:btree_74762_again, r=Mark-Simulacrum
...
BTreeMap: better way to postpone root access in DrainFilter
A slightly more elegant (in my opinion) adaptation of #74762 . Benchmarks seem irrationally pleased to:
```
benchcmp old new --threshold 5
name old ns/iter new ns/iter diff ns/iter diff % speedup
btree::map::clone_fat_100_and_remove_all 215,182 185,052 -30,130 -14.00% x 1.16
btree::map::clone_fat_100_and_remove_half 139,667 127,945 -11,722 -8.39% x 1.09
btree::map::clone_fat_val_100_and_remove_all 96,755 81,279 -15,476 -16.00% x 1.19
btree::map::clone_fat_val_100_and_remove_half 64,678 56,911 -7,767 -12.01% x 1.14
btree::map::find_rand_100 18 17 -1 -5.56% x 1.06
btree::map::first_and_last_0 33 35 2 6.06% x 0.94
btree::map::first_and_last_100 40 54 14 35.00% x 0.74
btree::map::insert_rand_100 45 42 -3 -6.67% x 1.07
btree::map::insert_rand_10_000 45 41 -4 -8.89% x 1.10
btree::map::iter_0 2,010 1,759 -251 -12.49% x 1.14
btree::map::iter_100 3,514 2,764 -750 -21.34% x 1.27
btree::map::iter_10k 4,018 3,768 -250 -6.22% x 1.07
btree::map::range_unbounded_unbounded 37,269 28,929 -8,340 -22.38% x 1.29
btree::map::range_unbounded_vs_iter 31,518 28,814 -2,704 -8.58% x 1.09
```
r? @Mark-Simulacrum
2020-08-08 07:46:04 +00:00
bors
c2d1b0d980
Auto merge of #75071 - ssomers:btree_cleanup_5, r=Mark-Simulacrum
...
BTreeMap: enforce the panic rule imposed by `replace`
Also, reveal the unsafe parts in the closures fed to it.
r? @Mark-Simulacrum
2020-08-07 21:48:32 +00:00
Stein Somers
734fc0477c
BTreeMap: enforce the panic rule imposed by replace
2020-08-07 19:51:26 +02:00
Stein Somers
85a7879341
BTreeMap: better way to postpone root access in DrainFilter
2020-08-07 15:02:56 +02:00
Nazım Can Altınova
16a5217141
Change the comment of BTreeMap::into_values
2020-08-07 14:10:12 +02:00
Nazım Can Altınova
29d9233cf6
Add unit tests for new BTreeMap::into_{keys,values}
methods
2020-08-07 13:13:42 +02:00
Nazım Can Altınova
13529f22ba
Add into_{keys,values}
methods for BTreeMap
2020-08-07 13:13:41 +02:00
Nazım Can Altınova
62e06a4d09
Make IntoIterator lifetime bounds of &BTreeMap match with &HashMap
2020-08-05 23:32:13 +02:00
Tim Diekmann
ab9362ad9a
Replace Memoryblock
with NonNull<[u8]>
2020-08-04 18:03:34 +02:00
Ivan Tham
e1ef3fa686
Consistent variable name alloc for raw_vec
2020-08-04 23:46:14 +08:00
bors
5f6bd6ec0a
Auto merge of #74850 - TimDiekmann:remove-in-place-alloc, r=Amanieu
...
Remove in-place allocation and revert to separate methods for zeroed allocations
closes rust-lang/wg-allocators#58
2020-08-04 11:22:45 +00:00
bors
80f84eb9c6
Auto merge of #75058 - ssomers:btree_cleanup_insert_2, r=Mark-Simulacrum
...
Clarify reuse of a BTreeMap insert support function and treat split support likewise
r? @Mark-Simulacrum
2020-08-04 03:48:48 +00:00
bors
829d69b9c6
Auto merge of #74827 - ssomers:btree_cleanup_insert, r=Mark-Simulacrum
...
Move bulk of BTreeMap::insert method down to new method on handle
Adjust the boundary between the map and node layers for insertion: do more in the node layer, keep root manipulation and pointer dereferencing separate. No change in undefined behaviour or performance.
r? @Mark-Simulacrum
2020-08-03 15:46:02 +00:00
Tim Diekmann
24ddf76ed7
Merge branch 'master' into remove-in-place-alloc
2020-08-03 02:18:20 +02:00
Manish Goregaokar
9471ab068c
Rollup merge of #75059 - shengsheng:typos, r=Dylan-DPC
...
fix typos
Fix common misspellings with https://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machines
2020-08-02 13:08:47 -07:00
Stein Somers
532e7f49fc
Separate off a leafy insert function instead of lying, and split split similarly
2020-08-02 21:42:17 +02:00
Stein Somers
f5c47fa44d
Move bulk of BTreeMap::insert method down to new method on handle
2020-08-02 20:20:42 +02:00
Yuki Okushi
7d18040b0c
Rollup merge of #74974 - RalfJung:miri-tests, r=Mark-Simulacrum
...
Make tests faster in Miri
Reduce some test iteration counts in Miri.
2020-08-03 01:05:20 +09:00
Yuki Okushi
1033c74665
Rollup merge of #74874 - ssomers:btree_cleanup_8, r=Mark-Simulacrum
...
BTreeMap: define forget_type only when relevant
Similar to `forget_node_type` for handles.
No effect on generated code, apart maybe from the superfluous calls that might not have been optimized away.
r? @Mark-Simulacrum
2020-08-03 01:05:18 +09:00
Yuki Okushi
814b31eb2e
Rollup merge of #74762 - ssomers:btree_no_root_in_remove_kv_tracking, r=Mark-Simulacrum
...
BTreeMap::drain_filter should not touch the root during iteration
Although Miri doesn't point it out, I believe there is undefined behaviour using `drain_filter` when draining the 11th-last element from a tree that was larger. When this happens, the last remaining child nodes are merged, the root becomes empty and is popped from the tree. That last step establishes a mutable reference to the node elected root and writes a pointer in `node::Root`, while iteration continues to visit the same node.
This is mostly code from #74437 , slightly adapted.
2020-08-03 01:05:13 +09:00
Yuki Okushi
8c331ee470
Rollup merge of #74686 - ssomers:btree_cleanup_3, r=Mark-Simulacrum
...
BTreeMap: remove into_slices and its unsafe block
A small tweak to make BTreeMap code shorter and less unsafe.
r? @Mark-Simulacrum
2020-08-03 01:05:12 +09:00
liuzhenyu
3b4151c9f3
fix typos
2020-08-02 23:20:00 +08:00
bors
e18b56345f
Auto merge of #75033 - Manishearth:rollup-d8afil1, r=Manishearth
...
Rollup of 5 pull requests
Successful merges:
- #74602 (Clarify the doc for MaybeUninit::zeroed on incorrect use)
- #74720 (Clean up E0728 explanation)
- #74992 (fix rustdoc generic param order)
- #75015 (Add Vec::spare_capacity_mut)
- #75022 (Use a slice pattern instead of rchunks_exact(_).next())
Failed merges:
r? @ghost
2020-08-02 01:04:54 +00:00
bors
5ef872f961
Auto merge of #74605 - rust-lang:vec-leak, r=Amanieu
...
Stabilize Vec::leak as a method
Closes https://github.com/rust-lang/rust/issues/62195
The signature is changed to a method rather than an associated function:
```diff
-pub fn leak<'a>(vec: Vec<T>) -> &'a mut [T]
+pub fn leak<'a>(self) -> &'a mut [T]
```
The reason for `Box::leak` not to be a method (`Deref` to an arbitrary `T` which might have its own, different `leak` method) does not apply.
2020-08-01 22:29:30 +00:00
Stein Somers
99398dd2fd
BTreeMap::drain_filter no longer touches the root during iteration
2020-08-01 23:35:30 +02:00
Stein Somers
602f9aab89
More benchmarks of BTreeMap mutation
2020-08-01 20:23:13 +02:00
Amanieu d'Antras
df3a30aee4
Add Vec::spare_capacity_mut
2020-08-01 18:24:35 +01:00
Stein Somers
240ef70c7b
Define forget_type only when relevant
2020-08-01 14:09:19 +02:00
bors
b5eae9c44d
Auto merge of #74373 - lcnr:array_chunks, r=withoutboats
...
add `slice::array_chunks` to std
Now that #74113 has landed, these methods are suddenly usable. A rebirth of #72334
Tests are directly copied from `chunks_exact` and some additional tests for type inference.
r? @withoutboats as you are both part of t-libs and working on const generics. closes #60735
2020-08-01 06:54:14 +00:00
Bastian Kauschke
d51b71a35a
add tracking issue
2020-08-01 07:49:24 +02:00
Yuki Okushi
ab4570eaf0
Rollup merge of #74644 - crlf0710:drop_old_stuff, r=Amanieu
...
Remove `linked_list_extras` methods.
Removing these in favor of the `Cursor` API in https://github.com/rust-lang/rust/issues/58533 .
Closes #27794 .
r? @Amanieu
2020-08-01 08:02:04 +09:00
Charles Lew
dc21178830
Remove linked_list_extras
methods.
2020-08-01 00:54:22 +08:00
Ralf Jung
ff0c3a9209
expand comments
2020-07-31 14:03:42 +02:00
Ralf Jung
7e168a696f
reduce slice::panic_safe test size further in Miri
2020-07-31 11:56:08 +02:00
Ralf Jung
0a62b7dc92
make some vec_deque tests less exhaustive in Miri
2020-07-31 11:56:08 +02:00
bors
ffa80f01d8
Auto merge of #74926 - Manishearth:rename-lint, r=jyn514
...
Rename intra_doc_link_resolution_failure
It should be plural to follow the conventions in https://github.com/rust-lang/rfcs/blob/master/text/0344-conventions-galore.md#lints
2020-07-31 02:20:47 +00:00
Manish Goregaokar
46379687ac
Rollup merge of #74782 - vorner:weak-into-raw-cnt-doc, r=dtolnay
...
Don't use "weak count" around Weak::from_raw_ptr
As `Rc/Arc::weak_count` returns 0 when having no strong counts, this
could be confusing and it's better to avoid using that completely.
Closes #73840 .
2020-07-30 13:04:29 -07:00
Manish Goregaokar
522ef2e981
Remove deny for intra doc link failures from library code, it's no longer necessary
2020-07-30 08:14:27 -07:00
Manish Goregaokar
7b7b5a7a12
Rename in library
2020-07-30 08:14:27 -07:00
Bastian Kauschke
95fa63e63f
liballoc export ArrayChunks
2020-07-30 10:50:35 +02:00
Manish Goregaokar
0f9b7bd80f
Rollup merge of #74902 - rust-lang:into_raw_non_null, r=dtolnay
...
Remove deprecated unstable `{Box,Rc,Arc}::into_raw_non_null` functions
FCP: https://github.com/rust-lang/rust/issues/47336#issuecomment-619369613
2020-07-29 16:38:28 -07:00
Manish Goregaokar
c07998e0e7
Rollup merge of #74852 - lzutao:inline-rm-tostring, r=nnethercote
...
Explain why inlining default ToString impl
Trying to remove inline attribute from default ToString impl causes regression.
Perf result at <https://github.com/rust-lang/rust/pull/74852#issuecomment-664812994 >.
2020-07-29 16:38:22 -07:00
Tim Diekmann
b01fbc437e
Simplify implementations of AllocRef
for Global
and System
2020-07-29 11:41:36 +02:00
Simon Sapin
1fb67363bf
Remove deprecated unstable {Box,Rc,Arc}::into_raw_non_null
functions
...
FCP: https://github.com/rust-lang/rust/issues/47336#issuecomment-619369613
2020-07-29 11:00:31 +02:00