Commit Graph

2352 Commits

Author SHA1 Message Date
Dylan DPC 54b160d764 Rollup merge of #71133 - MiSawa:fix-sort-by-key-doc, r=Dylan-DPC
Tighten time complexity on the doc of sort_by_key

Fixes #71132
2020-04-14 23:29:59 +02:00
Dylan DPC e2f24230a2 Rollup merge of #70949 - WaffleLapkin:simlify_vec_macro, r=petrochenkov
simplify `vec!` macro

Simplify `vec!` macro by replacing 2 following branches:
- `($($x:expr),*) => (...)`
- `($($x:expr,)*) => (...)`
with one:
- `($($x:expr),* $(,)?) => (...)`

This is a minor change, however, this will make the documentation cleaner
2020-04-14 23:29:53 +02:00
mi_sawa 408dc36980 Tighten time complexity on the doc 2020-04-14 23:51:03 +09:00
Dylan DPC 340b7314e3 Rollup merge of #71121 - AnthonyMikh:fix_string_doc_link, r=Dylan-DPC
Fix broken link in documentation for String::from_utf8
2020-04-14 15:35:32 +02:00
AnthonyMikh 15ba31d010 Fix broken link in documentation for String::from_utf8 2020-04-14 15:07:57 +03:00
Waffle 2c23bd4914 make vec![,] uncompilable
Fix regression introduced in commit #3ae2d21
2020-04-14 10:27:55 +03:00
Ivan Tham 7a22cf6415 Add examples to Pattern docs 2020-04-13 22:25:15 +08:00
Ivan Tham cbe96b04ad Add period to Pattern docs 2020-04-13 22:24:58 +08:00
Dylan DPC 03a724bd48 Rollup merge of #70996 - ChaiTRex:master, r=Amanieu
Add or_insert_with_key to Entry of HashMap/BTreeMap

Going along with `or_insert_with`, `or_insert_with_key` provides the `Entry`'s key to the lambda, avoiding the need to either clone the key or the need to reimplement this body of this method from scratch each time.

This is useful when the initial value for a map entry is derived from the key. For example, the introductory Rust book has an example Cacher struct that takes an expensive-to-compute lambda and then can, given an argument to the lambda, produce either the cached result or execute the lambda.

---

I'm fairly new to Rust, so any optimizations, corrections to types, better names, better documentation, or whatever else would be appreciated. I'd like to thank Arnavion on freenode for helping me to implement a very similar method when I found that `or_insert_with_key` was unavailable.

As a somewhat-related note, this implements https://github.com/rust-lang/rfcs/issues/1202 from 2015, so if this pull request is accepted, that should be closed.
2020-04-11 17:52:11 +02:00
Chai T. Rex db0c39fba5 Change issue number to point to tracking issue 2020-04-11 08:46:12 -04:00
Chai T. Rex 78102377d0 Fixed doc tests for added methods 2020-04-10 13:45:34 -04:00
Chai T. Rex 921579cc3c Add or_insert_with_key to Entry of HashMap/BTreeMap
Going along with or_insert_with, or_insert_with_key provides the
Entry's key to the lambda, avoiding the need to either clone the
key or the need to reimplement this body of this method from
scratch each time.

This is useful when the initial value for a map entry is derived
from the key. For example, the introductory Rust book has an
example Cacher struct that takes an expensive-to-compute lambda and
then can, given an argument to the lambda, produce either the
cached result or execute the lambda.
2020-04-10 12:54:09 -04:00
Mazdak Farrokhzad f699a55e4b Rollup merge of #70981 - ssomers:btreemap_into_into_iter, r=Mark-Simulacrum
Rearrange BTreeMap::into_iter to match range_mut.

r? @Mark-Simulacrum
I wondered why you catered for the optional root differently in `into_iter` than in `range_mut`.
2020-04-10 18:15:24 +02:00
Mazdak Farrokhzad 277ce9e249 Rollup merge of #70979 - ssomers:btreemap_the_alice_merton_variations, r=Amanieu
Follow up on BTreeMap comments

r? @Amanieu (for the first commit)
2020-04-10 18:15:22 +02:00
Mazdak Farrokhzad 74e93bb8e6 Rollup merge of #70913 - eddyb:rc-arc-diagnostic-items, r=matthewjasper
Replace "rc"/"arc" lang items with Rc/Arc diagnostic items.

`Rc`/`Arc` should have no special semantics, so it seems appropriate for them to not be lang items.

r? @matthewjasper
2020-04-10 12:48:45 +02:00
Mazdak Farrokhzad 81a360fe9a Rollup merge of #70843 - ssomers:btree_drain_filter_epilogue, r=Amanieu
Remove the Ord bound that was plaguing drain_filter

Now that  #70795 made it superfluous. Also removes superfluous lifetime specifiers (at least I think they are).
2020-04-10 12:48:44 +02:00
Stein Somers 4ade06bab8 Rearrange BTreeMap::into_iter to match range_mut. 2020-04-10 10:58:17 +02:00
Stein Somers de39a4f621 Respect the comment: no root unless the borrow type is Mut 2020-04-09 21:37:30 +02:00
Stein Somers 607315b2c3 Kill comment left behind by a last minute change in #70795 2020-04-09 20:16:30 +02:00
Mazdak Farrokhzad 2c3147f018 Rollup merge of #70958 - Amanieu:android_try_reserve, r=Mark-Simulacrum
Disable try_reserve tests on Android

Calling `realloc` with large sizes seems to be broken on older Android versions that use dlmalloc as the default allocator. This is not an issue for modern Android versions that use jemalloc.

Fixes #55861
2020-04-09 18:17:22 +02:00
Amanieu d'Antras 7060a9e683 Disable try_reserve tests on Android 2020-04-09 15:55:12 +01:00
Waffle 3ae2d21c12 simplify vec! macro
Simplify `vec!` macro by replacing 2 following branches:
- `($($x:expr),*) => (...)`
- `($($x:expr,)*) => (...)`
with one:
- `($($x:expr),* $(,)?) => (...)`
2020-04-09 11:03:57 +03:00
Dylan DPC 5848209b64 Rollup merge of #70930 - lcnr:patch-1, r=Dylan-DPC
add tracking issue to `VecDeque::make_contiguous`

The tracking issue is https://github.com/rust-lang/rust/issues/70929
2020-04-08 23:33:48 +02:00
Dylan DPC 3cae0e479e Rollup merge of #70565 - Zoxc:inlines-query-system, r=davidtwco
Add inline attributes for functions used in the query system
2020-04-08 23:33:40 +02:00
Dylan DPC b9bb12640e Rollup merge of #70850 - ssomers:btreemap_first_last, r=Amanieu
BTreeMap first last proposal tweaks

Clean-up and following up on a request in #62924.

Trying the reviewer of the original code #65637...
r? @scottmcm
2020-04-08 18:37:22 +02:00
Bastian Kauschke 839d229550 add VecDeque::make_contiguous tracking issue 2020-04-08 16:53:04 +02:00
Eduard-Mihai Burtescu 9d13520a6b Replace "rc"/"arc" lang items with Rc/Arc diagnostic items. 2020-04-08 10:47:41 +03:00
Dylan DPC 89d661f15d Rollup merge of #70857 - faern:use-assoc-int-float-consts, r=dtolnay
Don't import integer and float modules, use assoc consts 2

Follow up to #70777. I missed quite a lot of places. Partially because I wanted to keep the size of the last PR down, and partially because my regexes were not good enough :)

r? @dtolnay
2020-04-07 14:46:59 +02:00
Josh Stone e8339e820b Use split_at in slice's ToOwned::clone_into
It appears to codegen slightly more efficiently with `split_at` taking
two slices at once, rather than slicing across different calls.
2020-04-06 15:50:59 -07:00
Linus Färnstrand e4fc04b6df Use usize::MAX as assoc const in liballoc 2020-04-06 23:07:38 +02:00
Linus Färnstrand 65e10e3436 Use assoc const f32::NAN in liballoc 2020-04-06 22:44:04 +02:00
Stein Somers 8212b9772e BTreeMap first/last: add pop methods 2020-04-06 19:56:29 +02:00
Stein Somers c23ee767d9 BTreeMap first/last: make examples more to the point 2020-04-06 19:03:18 +02:00
Stein Somers bdbe56ecb8 BTreeMap first/last: simplify implementations 2020-04-06 19:00:43 +02:00
IgorPerikov 9fc77c0e15 add detailed panic messages for Vec functions 2020-04-06 17:53:56 +03:00
Stein Somers 6ee7e8c978 Remove the Ord bound that was plaguing drain_filter, and superfluous lifetimes 2020-04-06 15:45:19 +02:00
Dylan DPC 2ec0e148f1 Rollup merge of #70795 - Amanieu:btree_remove_tracking, r=Mark-Simulacrum
Keep track of position when deleting from a BTreeMap

This improves the performance of drain_filter and is needed for future Cursor support for BTreeMap.

cc @ssomers
r? @Mark-Simulacrum
2020-04-05 18:47:47 +02:00
Dylan DPC c2595539e7 Rollup merge of #70777 - faern:use-assoc-int-consts2, r=dtolnay
Don't import integer and float modules, use assoc consts

Stop importing the standard library integer and float modules to reach the `MIN`, `MAX` and other constants. They are available directly on the primitive types now.

This PR is a follow up of #69860 which made sure we use the new constants in documentation.

This type of change touches a lot of files, and previously all my assoc int consts PRs had collisions and were accepted only after a long delay. So I'd prefer to do it in smaller steps now. Just removing these imports seem like a good next step.

r? @dtolnay
2020-04-05 18:47:45 +02:00
Amanieu d'Antras 51357cf1cd Apply review feedback 2020-04-05 14:29:00 +01:00
Amanieu d'Antras 7365748c0c Keep track of position when deleting from a BTreeMap
This improves the performance of drain_filter and is needed for
future Cursor support for BTreeMap.
2020-04-05 12:18:46 +01:00
Dylan DPC c185c4fe47 Rollup merge of #70776 - RalfJung:raw-vec, r=Dylan-DPC,TimDiekmann
clarify comment in RawVec::into_box

On first reading I almost thought "len <= cap" would be all that there is to check here. Expand the comment to clarify that that is not the case.
2020-04-05 13:13:13 +02:00
Dylan DPC 7e4ed72d64 Rollup merge of #70558 - RalfJung:vec-extend-aliasing, r=Amanieu
Fix some aliasing issues in Vec

`Vec::extend` and `Vec::truncate` invalidated references into the vector even without reallocation, because they (implicitly) created a mutable reference covering the *entire* initialized part of the vector.

Fixes https://github.com/rust-lang/rust/issues/70301
I verified the fix by adding some new tests here that I ran in Miri.
2020-04-05 13:13:08 +02:00
Ralf Jung 6cbe1726a7 clarify safety in RawVec::into_box 2020-04-05 12:09:03 +02:00
Linus Färnstrand fff4f08398 Stop importing integer modules in liballoc 2020-04-05 11:22:01 +02:00
Ralf Jung 7e81c11aa8 tweak swap_remove 2020-04-05 08:40:40 +02:00
Trevor Spiteri 2b718e8d9c use ManuallyDrop instead of forget inside collections
This commit changes some usage of mem::forget into mem::ManuallyDrop
in some Vec, VecDeque, BTreeMap and Box methods.

Before the commit, the generated IR for some of the methods was
longer, and even after optimization, some unwinding artifacts were
still present.
2020-04-04 14:30:33 +02:00
Mazdak Farrokhzad 9b22fdc121 Rollup merge of #69860 - faern:use-assoc-int-consts, r=dtolnay
Use associated numeric consts in documentation

Now when the associated constants on int/float types are stabilized and the recommended way of accessing said constants (#68952). We can start using it in this repository, and recommend it via documentation example code.

This PR is the reincarnation of #67913 minus the actual adding + stabilization of said constants. (EDIT: Now it's only changing the documentation. So users will see the new consts, but we don't yet update the internal code)

Because of how fast bit rot happens to PRs that touch this many files, it does not try to replace 100% of the old usage of the constants in the entire repo, but a good chunk of them.
2020-04-03 22:55:02 +02:00
Yoshua Wuyts 3d17993f9f Fix link in task::Wake docs 2020-04-03 11:33:27 +02:00
Linus Färnstrand c0ec0a27b3 Replace max/min_value() with MAX/MIN assoc consts 2020-04-03 09:33:10 +02:00
bors 127a11a344 Auto merge of #70362 - TimDiekmann:alloc-overhaul, r=Amanieu
Overhaul of the `AllocRef` trait to match allocator-wg's latest consens; Take 2

GitHub won't let me reopen #69889 so I make a new PR.

In addition to #69889 this fixes the unsoundness of `RawVec::into_box` when using allocators supporting overallocating. Also it uses `MemoryBlock` in `AllocRef` to unify `_in_place` methods by passing `&mut MemoryBlock`. Additionally, `RawVec` now checks for `size_of::<T>()` again and ignore every ZST. The internal capacity of `RawVec` isn't used by ZSTs anymore, as `into_box` now requires a length to be specified.

r? @Amanieu

fixes rust-lang/wg-allocators#38
fixes rust-lang/wg-allocators#41
fixes rust-lang/wg-allocators#44
fixes rust-lang/wg-allocators#51
2020-04-02 06:08:35 +00:00