6296 Commits

Author SHA1 Message Date
Guillaume Gomez
3b10300e0a Rollup merge of #39886 - mbrubeck:doc-edit, r=steveklabnik
Additional docs for Vec, String, and slice trait impls

r? @steveklabnik
2017-02-24 13:22:54 +01:00
Steve Klabnik
3eb8434150 Get linkchecker clean
This affects the book, some missed things in the reference, the grammar,
and the standard library. Whew!
2017-02-21 14:02:12 -05:00
Steve Klabnik
b4cd3d9206 Revert "Fix up links"
This reverts commit 7f1d1c6d9a7be5e427bace30e740b16b25f25c92.

The original commit was created because mdBook and rustdoc had
different generation algorithms for header links; now with
https://github.com/rust-lang/rust/pull/39966 , the algorithms
are the same. So let's undo this change.

... when I came across this problem, I said "eh, this isn't fun,
but it doesn't take that long." I probably should have just actually
taken the time to fix upstream, given that they were amenable. Oh
well!
2017-02-20 09:09:12 -05:00
Mikhail Pak
eee6752b97 Docs: Better explanation of return values for min, max functions
Explain that a None is returned if the iterator is empty.
2017-02-19 11:01:02 +01:00
king6cong
860900cfc3 code order tweak 2017-02-17 09:47:37 +08:00
Matt Brubeck
b2ac1c9c6b Additional docs for Vec, String, and slice trait impls 2017-02-16 12:12:17 -08:00
Corey Farwell
3f95303db6 Rollup merge of #39793 - RalfJung:cell, r=alexcrichton
Allow more Cell methods for non-Copy types

Clearly, `get_mut` is safe for any `T`. The other two only provide unsafe pointers anyway.

The only remaining inherent method with `Copy` bound is `get`, which sounds about right to me.

I found the order if `impl` blocks in the file a little weird (first inherent impl, then some trait impls, then another inherent impl), but didn't change it to keep the diff small.

Contributes to #39264
2017-02-15 23:48:13 -05:00
bors
025c328bf5 Auto merge of #39633 - steveklabnik:vendor-mdbook, r=alexcrichton
Port books to mdbook

Part of https://github.com/rust-lang/rust/issues/39588

blocked on https://github.com/rust-lang/rust/pull/39431

As a first step towards the bookshelf, we ~vendor mdbook in-tree and~ port our books to it. Eventually, both of these books will be moved out-of-tree, but the nightly book will rely on doing the same thing. As such, this intermediate step is useful.

r? @alexcrichton @brson

/cc @azerupi
2017-02-15 01:22:16 +00:00
Ralf Jung
044ed10fee Remove Copy bound from some Cell trait impls
Contributes to #39264
2017-02-14 09:46:06 +01:00
bors
55013cddef Auto merge of #38981 - sdleffler:patch-1, r=alexcrichton
Add PartialOrd, Ord derivations to TypeId

I want to be able to sort a `Vec` of types which contain `TypeId`s, so an `Ord` derivation would be very useful to me. `Hash` and `PartialEq`/`Eq` already exist, so the missing `PartialOrd` and `Ord` derivations feel like an oversight to me.
2017-02-14 04:29:26 +00:00
Ralf Jung
51a2e2fd82 Allow more Cell methods for non-Copy types
Contributes to #39264
2017-02-13 19:50:54 +01:00
Steve Klabnik
7f1d1c6d9a Fix up links
mdbook and rustdoc generate links differently, so we need to change all
these links.
2017-02-13 13:41:24 -05:00
Corey Farwell
5b79f33c65 Rollup merge of #39716 - F001:swapCell, r=alexcrichton
Add `swap` method for `Cell`

Addition to #39264

r? @alexcrichton
2017-02-13 10:58:48 -05:00
Ahmed Charles
9cf4972c84 Fix some typos in the core::fmt docs. 2017-02-12 18:18:22 -08:00
Guillaume Gomez
fd006ad5a5 Rollup merge of #39756 - JordiPolo:feature/try_to_question, r=steveklabnik
Sustitutes try! for ? in the Result documentation

Hopefully newcomers will go strait to use `?`
2017-02-12 19:16:33 +01:00
bors
410d807e46 Auto merge of #39554 - zackmdavis:assert_eq_has_a_terrible_error_message_when_given_a_trailing_comma, r=BurntSushi
improve error message when two-arg assert_eq! receives a trailing comma

Previously, `assert_eq!(left, right,)` (respectively, `assert_ne!(left,
right,)`; note the trailing comma) would result in a confusing "requires
at least a format string argument" error. In reality, a format string is
optional, but the trailing comma puts us into the "match a token tree of
zero or more tokens" branch of the macro (in order to support the
optional format string), and passing the empty token tree into
`format_args!` results in the confusing error. If instead we match a
token tree of one or more tokens, we get a much more sensible
"unexpected end of macro invocation" error.

While we're here, fix up a stray space before a comma in the match
guards.

Resolves #39369.

-----

**Before:**
```
$ rustc scratch.rs
error: requires at least a format string argument
 --> scratch.rs:2:5
  |
2 |     assert_eq!(1, 2,);
  |     ^^^^^^^^^^^^^^^^^^
  |
  = note: this error originates in a macro outside of the current crate

error: aborting due to previous error
```

**After:**
```
$ ./build/x86_64-unknown-linux-gnu/stage1/bin/rustc scratch.rs
error: unexpected end of macro invocation
 --> scratch.rs:2:20
  |
2 |     assert_eq!(1, 2,);
  |                    ^
```
2017-02-12 03:34:57 +00:00
Jordi Polo
6b5c5f29ce Sustitutes try! for ? in the Result documentation 2017-02-12 11:02:55 +09:00
bors
bae454edc5 Auto merge of #39736 - frewsxcv:rollup, r=frewsxcv
Rollup of 9 pull requests

- Successful merges: #39174, #39660, #39676, #39692, #39701, #39710, #39721, #39724, #39725
- Failed merges:
2017-02-11 07:18:21 +00:00
Charlie Fan
a5e8bbf32b Add swap method for Cell 2017-02-11 13:08:13 +08:00
Corey Farwell
17dcc51438 Rollup merge of #39174 - rspeer:iter-nth-doc-fix, r=alexcrichton
Fix a misleading statement in `Iterator.nth()`

The `Iterator.nth()` documentation says "Note that all preceding elements will be consumed". I assumed from that that the preceding elements would be the *only* ones that were consumed, but in fact the returned element is consumed as well.

The way I read the documentation, I assumed that `nth(0)` would not discard anything (there are 0 preceding elements, and maybe it just peeks at the start of the iterator somehow), so I added a sentence clarifying that it does. I also rephrased it to avoid the stunted "i.e." phrasing.
2017-02-10 23:41:32 -05:00
bors
f140a6c6ef Auto merge of #39642 - stjepang:specialize-slice-partialord, r=alexcrichton
Specialize `PartialOrd<A> for [A] where A: Ord`

This way we can call `cmp` instead of `partial_cmp` in the loop, removing some burden of optimizing `Option`s away from the compiler.

PR #39538 introduced a regression where sorting slices suddenly became slower, since `slice1.lt(slice2)` was much slower than `slice1.cmp(slice2) == Less`. This problem is now fixed.

To verify, I benchmarked this simple program:
```rust
fn main() {
    let mut v = (0..2_000_000).map(|x| x * x * x * 18913515181).map(|x| vec![x, x ^ 3137831591]).collect::<Vec<_>>();
    v.sort();
}
```

Before this PR, it would take 0.95 sec, and now it takes 0.58 sec.
I also tried changing the `is_less` lambda to use `cmp` and `partial_cmp`. Now all three versions (`lt`, `cmp`, `partial_cmp`) are equally performant for sorting slices - all of them take 0.58 sec on the
benchmark.

Tangentially, as soon as we get `default impl`, it might be a good idea to implement a blanket default impl for `lt`, `gt`, `le`, `ge` in terms of `cmp` whenever possible. Today, those four functions by default are only implemented in terms of `partial_cmp`.

r? @alexcrichton
2017-02-11 04:37:27 +00:00
Rob Speer
11d36aec83 iterator docs: Move paragraph about discarding; clarify "consumed" 2017-02-10 01:35:29 -05:00
Rob Speer
ebf29ef073 Rephrase my proposed edit ("objects" -> "elements") 2017-02-10 01:31:14 -05:00
Rob Speer
5cc5e0851e Fix a misleading statement in Iterator.nth()
The `Iterator.nth()` documentation says "Note that all preceding elements will be consumed". I assumed from that that the preceding elements would be the *only* ones that were consumed, but in fact the returned element is consumed as well.

The way I read the documentation, I assumed that `nth(0)` would not discard anything (as there are 0 preceding elements), so I added a sentence clarifying that it does. I also rephrased it to avoid the stunted "i.e." phrasing.
2017-02-10 01:31:14 -05:00
Trevor Spiteri
e626a6807c name anonymous fn parameters in libcore traits 2017-02-09 22:31:21 +01:00
Corey Farwell
8f65d7543b Rollup merge of #39615 - phungleson:corefloat, r=alexcrichton
Improve format float

* Move float into mod float like in test
* Add more tests for f64 f32, lower exp, upper exp, which can come if handy in the future if we want refactor further
* Use `assert_eq` for clearer error messages
2017-02-09 08:47:35 -05:00
Stjepan Glavina
a344c126d0 Remove unnecessary specialization for [u8] 2017-02-08 18:03:10 +01:00
Corey Farwell
e0eeb6e637 Rollup merge of #39561 - phungleson:libcollectionsbench, r=alexcrichton
Extract collections benchmarks to libcollections/bench

Good suggestion from @stjepang https://github.com/rust-lang/rust/issues/39484#issuecomment-277467765

r? @alexcrichton
2017-02-08 10:19:51 -05:00
Stjepan Glavina
ececbb2687 Simplify by calling SliceOrd::compare 2017-02-08 16:01:32 +01:00
Stjepan Glavina
3bd6e46687 Specialize PartialOrd<A> for [A] where A: Ord
This way we can call `cmp` instead of `partial_cmp` in the loop,
removing some burden of optimizing `Option`s away from the compiler.

PR #39538 introduced a regression where sorting slices suddenly became
slower, since `slice1.lt(slice2)` was much slower than
`slice1.cmp(slice2) == Less`. This problem is now fixed.

To verify, I benchmarked this simple program:
```rust
fn main() {
    let mut v = (0..2_000_000).map(|x| x * x * x * 18913515181).map(|x| vec![x, x ^ 3137831591]).collect::<Vec<_>>();
    v.sort();
}
```

Before this PR, it would take 0.95 sec, and now it takes 0.58 sec.
I also tried changing the `is_less` lambda to use `cmp` and
`partial_cmp`. Now all three versions (`lt`, `cmp`, `partial_cmp`) are
equally performant for sorting slices - all of them take 0.58 sec on the
benchmark.
2017-02-08 12:19:50 +01:00
Son
2ba0b65c27 Improve fmt float
* Move to a separate float mod
* Add more tests for f64 f32 lower exp upper exp
* Use assert_eq for a clearer error message
2017-02-07 20:58:34 +11:00
Zack M. Davis
65435e14fe improve error message when two-arg assert_eq! receives a trailing comma
Previously, `assert_eq!(left, right,)` (respectively, `assert_ne!(left,
right,)`; note the trailing comma) would result in a confusing "requires
at least a format string argument" error. In reality, a format string is
optional, but the trailing comma puts us into the "match a token tree of
zero or more tokens" branch of the macro (in order to support the
optional format string), and passing the empty token tree into
`format_args!` results in the confusing error. If instead we match a
token tree of one or more tokens, we get a much more sensible
"unexpected end of macro invocation" error.

While we're here, fix up a stray space before a comma in the match
guards.

Resolves #39369.
2017-02-06 22:33:09 -08:00
Alex Crichton
bfa264271c Revert "Add 128-bit atomics"
This reverts commit 9903975003276cc42a1ed5f21eee292b7c62c331.
2017-02-06 10:39:14 -08:00
Son
7c8c45e762 Extract collections benchmarks to libcollections/benches
And libcore/benches
2017-02-06 21:38:47 +11:00
bors
031c1168b9 Auto merge of #39567 - frewsxcv:rollup, r=frewsxcv
Rollup of 12 pull requests

- Successful merges: #39439, #39472, #39481, #39491, #39501, #39509, #39514, #39519, #39526, #39528, #39530, #39538
- Failed merges:
2017-02-05 19:33:55 +00:00
Corey Farwell
ac329cd122 Rollup merge of #39501 - phungleson:libcorebench, r=alexcrichton
Extract libcore benchmarks to a separate folder

Fix #39484

r? @alexcrichton since you seem to know about this :)

Thanks!
2017-02-05 12:45:07 -05:00
bors
fc02736d59 Auto merge of #39408 - ollie27:i128_try_from, r=alexcrichton
Fix TryFrom for i128/u128

Another case of `as` cast silent truncation being error prone.

This also adds a few missing TryFrom tests to libcoretest.

cc #33417
cc #35118
2017-02-05 16:57:29 +00:00
Corey Farwell
e06fa7cf07 Rollup merge of #39477 - jimmycuadra:try-from-parameter-name, r=alexcrichton
Add a name for the parameter to `TryFrom::try_from`.

Although signatures with anonymous parameters may not be deprecated or removed at this point, the team seems to agree that the ability to have an anonymous parameter is unfortunate historical baggage, and that we shouldn't create new code that uses it.

Context: https://github.com/rust-lang/rust/issues/33417#issuecomment-276933861
2017-02-05 09:14:53 -05:00
Corey Farwell
65b24779a9 Rollup merge of #39393 - ollie27:stab_impls, r=alexcrichton
Fix a few impl stability attributes

The versions show up in rustdoc.
2017-02-05 09:14:45 -05:00
Corey Farwell
76e9ea7382 Rollup merge of #39289 - shahn:option_entry, r=alexcrichton
Provide Entry-like API for Option

This implements #39288.

I am wondering whether to use std::intrinsics::unreachable!() here. Both seems fine to me (the second match optimizes away in release mode).
2017-02-05 09:14:42 -05:00
Corey Farwell
8163b4b1f2 Rollup merge of #39107 - llogiq:branchless_filter_count, r=alexcrichton
branchless .filter(_).count()

I found that the branchless version is only slower if we have little to no branch misses, which usually isn't the case. I notice speedups between -5% (perfect prediction) and 60% (real world data).
2017-02-05 09:14:40 -05:00
Corey Farwell
c4c6c49e52 Rollup merge of #38959 - Amanieu:atomic128, r=alexcrichton
Add 128-bit atomics

This is currently only supported on AArch64 since that is the only target which unconditionally supports 128-bit atomic operations.

cc #35118
2017-02-05 09:14:37 -05:00
Sebastian Hahn
8e02ad0ada Provide Entry-like API for Option
This implements #39288.

Thanks to @steveklabnik and @oli-obk for their review comments :)
2017-02-05 00:48:44 +01:00
Oliver Middleton
a2de6e2285 Fix TryFrom for i128/u128
Another case of `as` cast silent truncation being error prone.

This also adds a few missing TryFrom tests to libcoretest.
2017-02-04 23:10:28 +00:00
bors
1b5c7ac833 Auto merge of #39399 - clarcharr:iter_rfind, r=alexcrichton
Add Iterator::rfind.

I found it weird that `Iterator` has `rpostition` but not `rfind`. This adds that method.
2017-02-04 04:53:53 +00:00
Son
34f444de5d Extract libcore benchmarks to a separate folder 2017-02-04 10:04:22 +11:00
bors
0648517faf Auto merge of #39463 - alexcrichton:update-bootstrap, r=alexcrichton
Bump version, upgrade bootstrap

This commit updates the version number to 1.17.0 as we're not on that version of
the nightly compiler, and at the same time this updates src/stage0.txt to
bootstrap from freshly minted beta compiler and beta Cargo.
2017-02-03 22:55:28 +00:00
Alex Crichton
626e754473 Bump version, upgrade bootstrap
This commit updates the version number to 1.17.0 as we're not on that version of
the nightly compiler, and at the same time this updates src/stage0.txt to
bootstrap from freshly minted beta compiler and beta Cargo.
2017-02-03 13:25:46 -08:00
Michał Krasnoborski
0267529681 Merge remote-tracking branch 'upstream/master' into format-with-capacity 2017-02-03 17:48:07 +01:00
Clar Charr
3cf485c963 Move rfind to DoubleEndedIterator, add tracking issue. 2017-02-03 00:01:52 -05:00