Commit graph

6430 commits

Author SHA1 Message Date
Corey Farwell
e4a62109c9 Rollup merge of #41037 - stjepang:move-libxtest, r=alexcrichton
Move libXtest into libX/tests

This change moves:

1. `libcoretest` into `libcore/tests`
2. `libcollectionstest` into `libcollections/tests`

This is a follow-up to #39561.

r? @alexcrichton
2017-04-05 23:51:42 -04:00
Ariel Ben-Yehuda
d8b61091f6 Rollup merge of #41065 - jorendorff:slice-rsplit-41020, r=alexcrichton
[T]::rsplit() and rsplit_mut(), #41020
2017-04-05 23:01:13 +00:00
Ariel Ben-Yehuda
5e410ba5ef Rollup merge of #41028 - bluss:rev-rfind, r=alexcrichton
Let .rev()'s find use the underlying rfind and vice versa

- Connect the plumbing in an obvious way from Rev's find → underlying rfind and vice versa
- A style change in the provided implementation for Iterator::rfind, using simple next_back when it is enough
2017-04-05 23:01:10 +00:00
Ariel Ben-Yehuda
9d074473da Rollup merge of #40943 - Amanieu:offset_to, r=alexcrichton
Add ptr::offset_to

This PR adds a method to calculate the signed distance (in number of elements) between two pointers. The resulting value can then be passed to `offset` to get one pointer from the other. This is similar to pointer subtraction in C/C++.

There are 2 special cases:

- If the distance is not a multiple of the element size then the result is rounded towards zero. (in C/C++ this is UB)
-  ZST return `None`, while normal types return `Some(isize)`. This forces the user to handle the ZST case in unsafe code. (C/C++ doesn't have ZSTs)
2017-04-05 23:01:08 +00:00
Ariel Ben-Yehuda
fc5ff66b04 Rollup merge of #40927 - stjepang:docs-atomic-overflow-note, r=alexcrichton
Add a note about overflow for fetch_add/fetch_sub

Fixes #40916
Fixes #34618

r? @steveklabnik
2017-04-05 23:01:07 +00:00
Ariel Ben-Yehuda
a18202792a Rollup merge of #40709 - lifthrasiir:leaner-unicode-debug-str, r=alexcrichton
Reduce a table used for `Debug` impl of `str`.

This commit shrinks the size of the aforementioned table from 2,102 bytes to 1,197 bytes. This is achieved by an observation that most `u16` entries are common in its upper byte. Specifically:

- `SINGLETONS` now uses two tables, one for (upper byte, lower count) and another for a series of lower bytes. For each upper byte given number of lower bytes are read and compared.

- `NORMAL` now uses a variable length format for the count of "true" codepoints and "false" codepoints (one byte with MSB unset, or two big-endian bytes with the first MSB set).

The code size and relative performance roughly remains same as this commit tries to optimize for both. The new table and algorithm has been verified for the equivalence to older ones.

In my x86-64 macOS laptop with `rustc 1.17.0-nightly (0aeb9c129 2017-03-15)`, `-C opt-level=3 -C lto` gives the following:

* The old routine compiles to 2,102 bytes of data and 416 bytes of code.
* The new routine compiles to 1,197 bytes of data and 448 bytes of code.

Counting a number of all printable Unicode scalar values (128,003, if you wonder) by filtering `0..0x110000` with `std::char::from_u32` and `is_printable` took 50±7ms for both. This can be surprising as the new routine *has* to do more calculations; this is partly explained by the fact that a linear search of `SINGLETONS` has been replaced by *two* linear searches for upper and lower bytes, which greatly reduces the iteration count.
2017-04-05 23:01:05 +00:00
Corey Farwell
f56b46c0ee Rollup merge of #41066 - steveklabnik:fix-links, r=frewsxcv
Fix links

part of https://github.com/rust-lang/rust/issues/40912

[]\n() is not actually a link.

r? @frewsxcv @GuillaumeGomez
2017-04-05 12:44:38 -04:00
Corey Farwell
2213912d5a Rollup merge of #41043 - GuillaumeGomez:sup_balise, r=steveklabnik
Replace ^ with <sup> html balise

r? @steveklabnik
2017-04-05 12:44:36 -04:00
Corey Farwell
4ed4c41e48 Rollup merge of #40999 - irfanhudda:improve-option-docs, r=steveklabnik
Improve option API docs

Associated Issue: #29366

Improve `option` API docs for
* `IntoIter` struct
* `Iter` struct
* `IterMut` struct

r? @steveklabnik
2017-04-05 12:44:31 -04:00
Corey Farwell
325848abe4 Rollup merge of #40997 - donniebishop:from_utf8_linking, r=steveklabnik
Added links to types in from_utf8 description

References #29375. Link to types mentioned in the documentation for `from_utf8` (`str`, `&[u8`], etc). Paragraphs were reformatted to keep any one line from being excessively long, but are otherwise unchanged.
2017-04-05 12:44:30 -04:00
Corey Farwell
fd474f0b2e Rollup merge of #40992 - donniebishop:utf8err_linking, r=alexcrichton
Added links to from_utf8 methods in Utf8Error

Referencing  #29375. Linked the `from_utf8` methods for both `String` and `str` in the description. Also linked the `u8` to its documentation
2017-04-05 12:44:29 -04:00
Kang Seonghoon
44bcd261a7 Reduce a table used for Debug impl of str.
This commit shrinks the size of the aforementioned table from
2,102 bytes to 1,197 bytes. This is achieved by an observation that
most u16 entries are common in its upper byte. Specifically:

- SINGLETONS now uses two tables, one for (upper byte, lower count)
  and another for a series of lower bytes. For each upper byte given
  number of lower bytes are read and compared.

- NORMAL now uses a variable length format for the count of "true"
  codepoints and "false" codepoints (one byte with MSB unset, or
  two big-endian bytes with the first MSB set).

The code size and relative performance roughly remains same as this
commit tries to optimize for both. The new table and algorithm has
been verified for the equivalence to older ones.
2017-04-05 09:13:19 -07:00
steveklabnik
b5cedb7c4e tidy clean and small text fix 2017-04-05 11:58:53 -04:00
Amanieu d'Antras
1f70247446 Add tracking issue for offset_to 2017-04-05 07:45:44 +01:00
steveklabnik
086627ecd2 Fix links
part of https://github.com/rust-lang/rust/issues/40912

[]\n() is not actually a link.
2017-04-04 15:39:44 -04:00
Jason Orendorff
a45fedfa38 simplify implementation of [T]::splitn and friends #41020 2017-04-04 13:40:56 -05:00
Jason Orendorff
2e3f0d8451 add [T]::rsplit() and rsplit_mut() #41020 2017-04-04 13:40:26 -05:00
Guillaume Gomez
7a07a73eb1 Replace ^ with <sup> html balise 2017-04-03 21:17:47 +02:00
Stjepan Glavina
13c744f30d Move libXtest into libX/tests
This change moves:

1. `libcoretest` into `libcore/tests`
2. `libcollectionstest` into `libcollections/tests`

This is a follow-up to #39561.
2017-04-03 20:49:39 +02:00
Amanieu d'Antras
7b89bd7cca Add ptr::offset_to 2017-04-03 01:36:56 +01:00
Ulrik Sverdrup
74f8ea263e iter: Simplification in rfind's provided implementation
- Prefer simpler constructs instead of going through &mut I's Iterator
  implementation.
2017-04-03 02:03:19 +02:00
Ulrik Sverdrup
29a6a9e8d2 iter: Use underlying find/rfind for the same methods in Rev 2017-04-03 02:03:19 +02:00
Irfan Hudda
4c9f8ae4fd Minor changes to core::option docs 2017-04-02 06:10:34 +05:30
Irfan Hudda
c414628782 Improve docs of core::option::Iter 2017-04-01 22:17:48 +05:30
Irfan Hudda
029ace4071 Improve docs of core::option::IterMut 2017-04-01 22:09:10 +05:30
Irfan Hudda
128a313ee2 Improve docs of core::option::IntoIter 2017-04-01 21:58:30 +05:30
Donnie Bishop
364241c709 Added links to types in from_utf8 description 2017-04-01 09:56:40 -04:00
Donnie Bishop
5198072c3a Added links to from_utf8 methods in Utf8Error 2017-03-31 23:22:22 -04:00
Corey Farwell
c9a9d7acaf Rollup merge of #40935 - donniebishop:str_boilerplate_docs, r=steveklabnik
Modify str Structs descriptions

References #29375. Modified descriptions of multiple structs to be more in line with structs found under [`std::iter`](https://doc.rust-lang.org/std/iter/#structs), such as [`Chain`](https://doc.rust-lang.org/std/iter/struct.Chain.html) and [`Enumerate`](https://doc.rust-lang.org/std/iter/struct.Enumerate.html)
2017-03-31 16:48:28 -04:00
Corey Farwell
c5082fe801 Rollup merge of #40871 - projektir:atomic_links, r=steveklabnik
Adding links for Atomics docs #29377

r? @steveklabnik

This should be good for `std::sync::atomic`. The other pages still need more (examples, etc.).
2017-03-31 16:48:27 -04:00
Corey Farwell
c34f533a85 Rollup merge of #40934 - SamWhited:improve_write_writeln_docs, r=steveklabnik
Improve the docs for the write and writeln macros

This change reduces duplication by linking the documentation for
`writeln!` to `write!`. It also restructures the `write!` documentation
to read in a more logical manner (I hope; feedback would be welcome).

Updates #29329, #29381
2017-03-31 11:43:39 -04:00
Corey Farwell
d36b24d8bf Rollup merge of #40929 - bluss:full-reverse, r=alexcrichton
Implement all PartialOrd methods for Reverse

When making a forwarding wrapper we must in general forward all methods,
so that we use the type's own `lt` for example instead of the default.

Example important case: f32's partial_cmp does several operations but
its lt is a primitive.

Follow up on #40720
2017-03-31 11:43:38 -04:00
bors
a9329d3aa3 Auto merge of #40737 - nagisa:safe-slicing-strs, r=BurntSushi
Checked slicing for strings

cc https://github.com/rust-lang/rust/issues/39932
2017-03-31 11:13:20 +00:00
Donnie Bishop
3b396217b5 Remove parentheses in method references 2017-03-30 18:33:23 -04:00
Donnie Bishop
17b4884d3c Modify Chars' description 2017-03-30 15:51:49 -04:00
Donnie Bishop
41e0498586 Modify CharIndices' description 2017-03-30 15:46:41 -04:00
Sam Whited
b03edb4a02 Improve the docs for the write and writeln macros
This change reduces duplication by linking the documentation for
`writeln!` to `write!`. It also restructures the `write!` documentation
to read in a more logical manner.

Updates #29329, #29381
2017-03-30 14:40:10 -05:00
Donnie Bishop
0f5cf54246 Modify Bytes' description 2017-03-30 15:40:05 -04:00
Donnie Bishop
9d4b486b84 Modify Lines' description 2017-03-30 15:36:50 -04:00
Ulrik Sverdrup
6fda0fe891 cmp: Implement all PartialOrd methods for Reverse
When making a forwarding wrapper we must in general forward all methods,
so that we use the type's own `lt` for example instead of the default.

Example important case: f32's partial_cmp does several operations but
its lt is a primitive.
2017-03-30 17:29:19 +02:00
Stjepan Glavina
2946c41c05 More consistent wording 2017-03-30 16:23:46 +02:00
Stjepan Glavina
3fa28cc11e Add a note about overflow for fetch_add/fetch_sub 2017-03-30 16:10:55 +02:00
Corey Farwell
fb6ced426e Rollup merge of #40907 - donniebishop:utf8_unchecked_docs, r=steveklabnik
Linked str in from_utf_unchecked

References #29375. Linked `str` in from_utf_unchecked's documentation to the docs for primitive `str`
2017-03-29 16:53:33 -04:00
Corey Farwell
233e0f3e52 Rollup merge of #40832 - pftbest:fix_msp430, r=stjepang
libcore: fix compilation on 16bit target (MSP430).

Since PR #40601 has been merged, libcore no longer compiles on MSP430.
The reason is this code in `break_patterns`:
```rust
 let mut random = len;
 random ^= random << 13;
 random ^= random >> 17;
 random ^= random << 5;
 random &= modulus - 1;
```
It assumes that `len` is at least a 32 bit integer.
As a workaround replace `break_patterns` with an empty function for 16bit targets.

cc @stjepang
cc @alexcrichton
2017-03-29 16:53:32 -04:00
Donnie Bishop
19b98f3027 Linked str in from_utf_unchecked 2017-03-29 13:21:31 -04:00
Corey Farwell
8df6cd365c Rollup merge of #40897 - irfanhudda:fix-typo-char, r=BurntSushi
Fix typo in libcore/char.rs
2017-03-29 08:57:08 -04:00
Corey Farwell
978c90654b Rollup merge of #40720 - mitsuhiko:feature/rev-key, r=BurntSushi
Added core::cmp::Reverse for sort_by_key reverse sorting

I'm not sure if this is the best way to go about proposing this feature but it's pretty useful. It allows you to use `sort_by_key` and return tuples where a single item is then reversed to how it normally sorts.

I quite miss something like this in Rust currently though I'm not sure if this is the best way to implement it.
2017-03-29 08:57:03 -04:00
Irfan Hudda
3783c44eac Fix typo in libcore/char.rs 2017-03-29 16:50:09 +05:30
Armin Ronacher
5d3695362f Updated tracking issue for cmp::Reverse 2017-03-29 09:06:52 +02:00
bors
abf5592510 Auto merge of #40338 - GuillaumeGomez:pulldown-switch, r=frewsxcv,steveklabnik
Replace hoedown with pull in rustdoc

cc @rust-lang/docs
2017-03-29 07:06:13 +00:00