Commit graph

6311 commits

Author SHA1 Message Date
Djzin
c6ca81aa92 change wording 2017-04-24 07:40:11 +01:00
Djzin
2816998d1e use simd blocks 2017-03-15 06:45:43 +00:00
Djzin
1daf589642 add SWAP_BLOCK_SIZE constant 2017-03-13 20:06:07 +00:00
Djzin
d1fec0d87a fix typo 2017-03-12 18:41:58 +00:00
Djzin
5702f436aa a new approach; ditch xor cuteness and maximize cache locality 2017-03-12 18:39:02 +00:00
Djzin
85049e508b avoid recursion 2017-03-12 14:10:22 +00:00
Djzin
4bcfbc36c6 speed up mem::swap 2017-03-12 13:14:47 +00:00
Ariel Ben-Yehuda
b933bdc7c2 Rollup merge of #40299 - GuillaumeGomez:fmt-display-example, r=frewsxcv
Add missing example for Display::fmt

r? @frewsxcv
2017-03-11 21:57:40 +02:00
Guillaume Gomez
a5a3981f1e Add missing example for Display::fmt 2017-03-10 15:00:19 +01:00
Ariel Ben-Yehuda
aea8010098 Rollup merge of #40333 - tbu-:pr_doc_ptr_write, r=alexcrichton
Clarify handling of `src` in `ptr::write`

Fixes #39733.
2017-03-08 20:54:08 +02:00
Tobias Bucher
025bf9582e Clarify handling of src in ptr::write
Fixes #39733.
2017-03-07 23:39:49 +01:00
Guillaume Gomez
65ac1e92fe Add missing urls in some macros doc 2017-03-07 19:13:17 +01:00
Simon Sapin
031f9b15df Only keep one copy of the UTF8_CHAR_WIDTH table.
… instead of one of each of libcore and libstd_unicode.

Move the `utf8_char_width` function to `core::str`
under the `str_internals` unstable feature.
2017-03-01 23:25:27 +01:00
Corey Farwell
c4b6c98f35 Rollup merge of #40126 - GuillaumeGomez:fmt-write-docs, r=frewsxcv
Add missing docs and examples for fmt::Write

r? @frewsxcv
2017-02-28 08:33:09 -05:00
Guillaume Gomez
5933560324 Add missing docs and examples for fmt::Write 2017-02-28 11:14:32 +01:00
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 7f1d1c6d9a.

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 9903975003.
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