Commit graph

10017 commits

Author SHA1 Message Date
Tyler Mandry
913c095bcf
Rollup merge of #64923 - lzutao:improve-doc-needs_drop, r=jonas-schievink
Add missing links for mem::needs_drop

r? @jonas-schievink
2019-09-30 14:38:32 -07:00
Tyler Mandry
5560f8c664
Rollup merge of #64911 - hman523:64844, r=Dylan-DPC
Fixed a misleading documentation issue #64844

Made the suggested change from @steveklabnik on issue #64844
2019-09-30 14:38:28 -07:00
Lzu Tao
cdf1852a61 Add missing links for mem::needs_drop 2019-09-30 16:12:01 +00:00
bors
e0436d912d Auto merge of #64600 - scottmcm:no-slice-tryfold-unroll, r=bluss
Remove manual unrolling from slice::Iter(Mut)::try_fold

While this definitely helps sometimes (particularly for trivial closures), it's also a pessimization sometimes, so it's better to leave this to (hypothetical) future LLVM improvements instead of forcing this on everyone.

I think it's better for the advice to be that sometimes you need to unroll manually than you sometimes need to not-unroll manually (like #64545).

---

For context see https://github.com/rust-lang/rust/pull/64572#issuecomment-532961046
2019-09-30 09:52:29 +00:00
hman523
6c6d27d685 Fixed a misleading documentation issue #64844 2019-09-30 00:26:42 -05:00
Mazdak Farrokhzad
69a3009cbf
Rollup merge of #64837 - nliberg:patch-2, r=Centril
Improve wording in documentation of MaybeUninit

Changes

> variables are properly initialized **at** their respective type

into

> variables are properly initialized **as** their respective type
2019-09-28 22:12:06 +02:00
Nils Liberg
fd505d7fd5 Improve wording in documentation of MaybeUninit 2019-09-28 11:49:45 +02:00
rusty-snake
bd995c0e3a
pin.rs: fix links to primitives in documentation 2019-09-27 14:33:08 +00:00
bors
134004f74d Auto merge of #62661 - arielb1:never-reserve, r=nikomatsakis
reserve `impl<T> From<!> for T`

this is necessary for never-type stabilization.

cc #57012 #35121

I think we wanted a crater run for this @nikomatsakis?

r? @nikomatsakis
2019-09-26 08:42:34 +00:00
Ariel Ben-Yehuda
e70724c23b address rebase damage 2019-09-25 23:18:31 +03:00
Mazdak Farrokhzad
1e8dd37561
Rollup merge of #64764 - Mark-Simulacrum:snap, r=Centril
Master is now 1.40

r? @pietroalbini
2019-09-25 16:26:22 +02:00
Mazdak Farrokhzad
b30238e312
Rollup merge of #64386 - tspiteri:const-abs2, r=oli-obk
use `sign` variable in abs and wrapping_abs methods

This also makes the code easier to understand by hinting at the significance of `self >> ($BITS - 1)`.

Also, now `overflowing_abs` simply uses `wrapping_abs`, which is clearer and avoids a potential performance regression in the LLVM IR.

This PR follows from the discussion from #63786.

r? @eddyb
cc @nikic
2019-09-25 16:26:16 +02:00
Mark Rousskov
f359a94849 Snap cfgs to new beta 2019-09-25 08:42:46 -04:00
Mazdak Farrokhzad
8db83a04c5
Rollup merge of #64717 - andrewbanchich:master, r=joshtriplett
update mem::discriminant test to use assert_eq and assert_ne over comparison operators

Use assert_eq and assert_ne over comparison operators.
2019-09-24 23:45:28 +02:00
Mazdak Farrokhzad
e74d953bdc
Rollup merge of #64296 - KodrAus:chore/iter_order_by, r=Centril
Document the unstable iter_order_by library feature

Tracking issue: #64295

Follow-up for: #62205

References the tracking issue and adds a page to the unstable book for the new unstable `iter_order_by` feature.
2019-09-24 23:45:19 +02:00
Niko Matsakis
99dc545552 add a rustdoc comment to the reservation impl 2019-09-24 21:11:51 +03:00
Niko Matsakis
167ab0439e nit: update error text to cite tracking issue 2019-09-24 21:11:50 +03:00
Ariel Ben-Yehuda
9196b2d0c8 add error message for case 2019-09-24 21:11:50 +03:00
Ariel Ben-Yehuda
5d79e8c4c9 reserve impl<T> From<!> for T
this is necessary for never-type stabilization
2019-09-24 21:11:50 +03:00
Oliver Scherer
7767e7fb16 Stabilize str::len, [T]::len, is_empty and str::as_bytes as const fn 2019-09-24 12:56:44 +02:00
Scott McMurray
6ac64abd6d Just delete the overrides now that they match the default implementations 2019-09-23 23:10:45 -07:00
Andrew Banchich
8acf95886b
update test
Use assert_eq and assert_ne over comparison operators.
2019-09-23 16:09:36 -04:00
Alex Crichton
1a8897fd8a Fix rebase conflicts 2019-09-23 09:35:50 -07:00
Alex Crichton
b3f95f460f Move --cfg bootstrap out of rustc.rs
Instead let's do this via `RUSTFLAGS` in `builder.rs`. Currently
requires a submodule update of `stdarch` to fix a problem with previous
compilers.
2019-09-23 09:34:44 -07:00
Scott McMurray
92e91f7541 Remove manual unrolling from slice::Iter(Mut)::try_fold
While this definitely helps sometimes (particularly for trivial closures), it's also a pessimization sometimes, so it's better to leave this to (hypothetical) future LLVM improvements instead of forcing this on everyone.

I think it's better for the advice to be that sometimes you need to unroll manually than you sometimes need to not-unroll manually (like #64545).
2019-09-21 21:16:24 -07:00
Mazdak Farrokhzad
1486b7f91c
Rollup merge of #64641 - cuviper:extern-rust-ctypes, r=estebank
Exempt extern "Rust" from improper_ctypes

It should be fine for Rust ABIs to involve any Rust type.

Fixes #64593.
2019-09-21 16:01:34 +02:00
bors
5349e69ae2 Auto merge of #64047 - timvermeulen:cmp_min_max_by, r=cuviper
Add `cmp::{min_by, min_by_key, max_by, max_by_key}`

This adds the following functions to `core::cmp`:

- `min_by`
- `min_by_key`
- `max_by`
- `max_by_key`

`min_by` and `max_by` are somewhat trivial to implement, but not entirely because `min_by` returns the first value in case the two are equal (and `max_by` the second). `min` and `max` can be implemented in terms of `min_by` and `max_by`, but not as easily the other way around.

To give an example of why I think these functions could be useful: the `Iterator::{min_by, min_by_key, max_by, max_by_key}` methods all currently hard-code the behavior mentioned above which is an ever so small duplication of logic. If we delegate them to `cmp::{min_by, max_by}` methods instead, we get the correct behavior for free. (edit: this is now included in the PR)

I added `min_by_key` / `max_by_key` for consistency's sake but I wouldn't mind removing them. I don't have a particular use case in mind for them, and `min_by` / `max_by` seem to be more useful.

Tracking issue: #64460
2019-09-21 04:21:25 +00:00
Josh Stone
9f374da467 Exempt extern "Rust" from improper_ctypes
It should be fine for Rust ABIs to involve any Rust type.
2019-09-20 15:39:34 -07:00
Tyler Mandry
05d93a7d06
Rollup merge of #64348 - arnohaase:pr_documentation_spin_loop_hint, r=alexcrichton
PR: documentation spin loop hint

The documentation for 'spin loop hint' explains that yield is better if the lock holder is running on the same CPU. I suggest that 'CPU or core' would be clearer.
2019-09-18 10:58:05 -07:00
Arno Haase
eb48b5d983 broken hyperlinks in documentation 2019-09-18 12:31:34 +02:00
Lzu Tao
bec0a76727 doc: Format some primitives examples 2019-09-18 08:24:24 +00:00
Tyler Mandry
d782f09ae0
Rollup merge of #64529 - taiki-e:docs-pin-as-mut, r=RalfJung
Add an example to Pin::as_mut

https://github.com/taiki-e/pin-project/issues/89#issuecomment-531701172

r? @RalfJung
2019-09-17 14:10:54 -07:00
Tyler Mandry
d6f2205ed8
Rollup merge of #64436 - llogiq:transmute-docs, r=RalfJung
improve Vec example soundness in mem::transmute docs

The previous version of the `Vec` example had a case of questionable soundness, because at one point `v_orig` was aliased.

r? @RalfJung
2019-09-17 14:10:50 -07:00
Andre Bogus
ab6e108644 improve Vec example soundness in mem::transmute docs 2019-09-17 18:31:54 +02:00
Taiki Endo
a22e9ee8d0
Update src/libcore/pin.rs
Co-Authored-By: Ralf Jung <post@ralfj.de>
2019-09-17 20:02:48 +09:00
Taiki Endo
522f4e1f3e Add an example to Pin::as_mut 2019-09-17 19:41:12 +09:00
Arno Haase
f4f136e67b newly phrased documentation for spin loop hints 2019-09-17 12:09:07 +02:00
Mazdak Farrokhzad
a1fd9bae2c
Rollup merge of #64531 - taiki-e:pin-self, r=Centril
Use shorthand syntax in the self parameter of methods of Pin
2019-09-17 03:08:41 +02:00
Mazdak Farrokhzad
52fa593441
Rollup merge of #64530 - taiki-e:docs-pin-lifetimes, r=Centril
Elide lifetimes in `Pin<&(mut) Self>`
2019-09-17 03:08:39 +02:00
Taiki Endo
076e0ce259 Use shorthand syntax in the self parameter of methods of Pin 2019-09-17 08:54:30 +09:00
Taiki Endo
3a046ffa71 Elide lifetimes in Pin<&(mut) Self> 2019-09-17 08:39:34 +09:00
varkor
18b24b718d Make some adjustments to the documentation for std::convert::identity
Fixes some extra blank lines and makes some minor tweaks to the wording.
2019-09-16 15:43:46 +01:00
Tim Vermeulen
72175915d6 Simplify Iterator::{min_by, max_by} using cmp::{min_by, max_by} 2019-09-14 21:52:08 +02:00
Tim Vermeulen
6e5ada43bf Add cmp::{min_by, min_by_key, max_by, max_by_key} 2019-09-14 21:52:08 +02:00
Mazdak Farrokhzad
afc52916f6
Rollup merge of #64203 - alexreg:rush-pr-2, r=centril
A few cosmetic improvements to code & comments in liballoc and libcore

Factored out from hacking on rustc for work on the REPL.

r? @Centril
2019-09-14 16:42:22 +02:00
Trevor Spiteri
562903a0a6 use sign variable in abs and wrapping_abs methods
This also makes the code easier to understand by hinting at the
significance of `self >> ($BITS - 1)` and by including an explanation
in the comments.

Also, now overflowing_abs simply uses wrapping_abs, which is clearer
and avoids a potential performance regression in the LLVM IR.
2019-09-13 10:20:17 +02:00
Mazdak Farrokhzad
4f1d50e65f
Rollup merge of #64349 - arnohaase:pr_documentation_atomicptr, r=cramertj
documentation for AtomicPtr CAS operations

The examples in the documentation for AtomicPtr CAS operations only show code that does *not* perform the CAS operation. I suggest to change them so that they actually do exchange the AtomicPtr's value.
2019-09-11 02:38:10 +02:00
Mazdak Farrokhzad
13726cc444
Rollup merge of #63786 - tspiteri:const-abs, r=alexcrichton
Make `abs`, `wrapping_abs`, `overflowing_abs` const functions

This makes `abs`, `wrapping_abs` and `overflowing_abs` const functions like #58044 makes `wrapping_neg` and `overflowing_neg` const functions.

`abs` is made const by returning `(self ^ -1) - -1` = `!self + 1` = `-self` for negative numbers and `(self ^ 0) - 0` = `self` for non-negative numbers. The subexpression `self >> ($BITS - 1)` evaluates to `-1` for negative numbers and `0` otherwise. The subtraction overflows when `self` is `min_value()`, as we would be subtracting `max_value() - -1`; this is when `abs` should overflow.

`wrapping_abs` and `overflowing_abs` make use of `wrapping_sub` and `overflowing_sub` instead of the subtraction operator.
2019-09-10 17:19:19 +02:00
Arno Haase
51c49e2573 fixed linter error 2019-09-10 14:25:40 +02:00
Arno Haase
7ad44c7c9c documentation for AtomicPtr CAS operations 2019-09-10 14:18:16 +02:00