Commit graph

196 commits

Author SHA1 Message Date
Andy Russell
82e55c1bdc
deny intra-doc link resolution failures in libstd 2018-12-17 21:10:24 -05:00
Alexander Regueiro
ee89c088b0 Various minor/cosmetic improvements to code 2018-12-07 23:53:34 +00:00
Chris Barrick
b6d3668c42 Fix a stutter in the docs for slice::exact_chunks 2018-12-06 16:53:24 -05:00
Ralf Jung
525e8f4368 use MaybeUninit in core::slice::rotate
Code by @japaric, I just split it into individual commits
2018-11-23 22:50:20 +01:00
Ralf Jung
f950c2cbd5 use MaybeUninit in core::slice::sort
Code by @japaric, I just split it into individual commits
2018-11-23 22:50:20 +01:00
bors
f3adec65dd Auto merge of #53918 - Havvy:doc-sort-by, r=GuillaumeGomez
Doc total order requirement of sort(_unstable)_by

I took the definition of what a total order is from the Ord trait
docs. I specifically put "elements of the slice" because if you
have a slice of f64s, but know none are NaN, then sorting by
partial ord is total in this case. I'm not sure if I should give
such an example in the docs or not.

r? @GuillaumeGomez
2018-11-22 06:50:18 +00:00
Mazdak Farrokhzad
e15c62d61f revert making internal APIs const fn. 2018-11-10 01:10:07 +01:00
Mazdak Farrokhzad
d1d2aa22c0 reduce list to functions callable in const ctx. 2018-11-10 01:10:07 +01:00
Mazdak Farrokhzad
5b89877dda constify parts of libcore. 2018-11-10 01:07:32 +01:00
Sebastian Dröge
52cc6fde4b Stabilize slice::rchunks(), rchunks_mut(), rchunks_exact(), rchunk_exact_mut()
Fixes #55177
2018-10-18 18:51:56 +03:00
Sebastian Dröge
b08ca2958e Stabilize slice::chunks_exact() and slice::chunks_exact_mut()
Fixes #47115
2018-10-18 18:51:56 +03:00
bors
121320d523 Auto merge of #54580 - sdroege:rchunks, r=SimonSapin
Add slice::rchunks(), rchunks_mut(), rchunks_exact() and rchunks_exact_mut()

These work exactly like the normal chunks iterators but start creating
chunks from the end of the slice.

----

The new iterators were motivated by a [comment](https://github.com/rust-lang/rust/issues/47115#issuecomment-424141121) by @DutchGhost.

~~~This currently includes the commits from https://github.com/rust-lang/rust/pull/54537 to not have to rename things twice or have merge conflicts. I'll force-push a new version of the branch ones those are in master.~~~

Also the stabilization tracking issue is just some number right now. I'll create the corresponding issue once this is reviewed and otherwise mergeable.

cc @DutchGhost
2018-10-18 12:47:31 +00:00
Sebastian Dröge
80a8e5c1f7 Add slice::rchunks(), rchunks_mut(), rchunks_exact() and rchunks_exact_mut()
These work exactly like the normal chunks iterators but start creating
chunks from the end of the slice.

See #55177 for the tracking issue
2018-10-18 10:38:05 +03:00
bors
8dc554a325 Auto merge of #54534 - nagisa:align-offset-simplification, r=alexcrichton
Simplify implementation of align_offset slightly
2018-10-12 06:38:11 +00:00
bors
ef5c00d0ca Auto merge of #54700 - frewsxcv:frewsxcv-binary-search, r=GuillaumeGomez
Clarify docs for when binary_search has many matches.

Fixes https://github.com/rust-lang/rust/issues/51817.
2018-10-08 03:04:50 +00:00
Corey Farwell
b5c64e2e26 Clarify docs for when binary_search has many matches.
Fixes https://github.com/rust-lang/rust/issues/51817.
2018-10-07 08:46:22 -04:00
Havvy (Ryan Scheel)
99bed21101 Linkify types in docs 2018-10-05 17:41:43 -07:00
Havvy (Ryan Scheel)
b911dba40b Slice total example: Move closer to total defn 2018-10-05 17:41:43 -07:00
Havvy (Ryan Scheel)
e36bbc82f2 Example of total ord of elements for sort_by 2018-10-05 17:41:42 -07:00
Havvy (Ryan Scheel)
7e57f0a6a8 Doc total order requirement of sort(_unstable)_by
I took the definition of what a total order is from the Ord trait
docs. I specifically put "elements of the slice" because if you
have a slice of f64s, but know none are NaN, then sorting by
partial ord is total in this case. I'm not sure if I should give
such an example in the docs or not.
2018-10-05 17:41:42 -07:00
Pietro Albini
7e571eead8
Rollup merge of #54687 - scottmcm:more-elision, r=dtolnay
Use impl_header_lifetime_elision in libcore

The feature is approved for stabilization, so let's use it to remove about 300 `'a`s.

Tracking issue for the feature: https://github.com/rust-lang/rust/issues/15872
2018-10-02 22:54:33 +02:00
kennytm
818a05d6e3
Rollup merge of #53784 - tbu-:pr_doc_slice_isize_max, r=RalfJung
Document that slices cannot be larger than `isize::MAX` bytes

Fixes #53676.
2018-10-01 16:12:54 +08:00
Simonas Kazlauskas
0b3e5eb6cc Simplify implementation of align_offset slightly 2018-09-30 16:27:13 +03:00
Scott McMurray
0a3bd9b6ab Use impl_header_lifetime_elision in libcore 2018-09-29 21:33:35 -07:00
Ralf Jung
e37d6d37e7 Revert "Auto merge of #53508 - japaric:maybe-uninit, r=RalfJung"
This reverts commit c6e3d7fa31, reversing
changes made to 4591a245c7.
2018-09-29 09:50:50 +02:00
Tobias Bucher
e370b1ccae Don't have two adjacent "see also" sentences 2018-09-27 09:49:12 +02:00
Pietro Albini
6a0f45b3f4
Rollup merge of #54537 - sdroege:chunks-exact, r=alexcrichton
Rename slice::exact_chunks() to slice::chunks_exact()

See https://github.com/rust-lang/rust/issues/47115#issuecomment-403090815
and https://github.com/rust-lang/rust/issues/47115#issuecomment-424053547
2018-09-25 22:34:47 +02:00
Sebastian Dröge
068c92b2cc Also rename ExactChunks iterator name to ChunksExact 2018-09-25 08:56:48 +03:00
Sebastian Dröge
e09e45041b Rename slice::exact_chunks() to slice::chunks_exact()
See https://github.com/rust-lang/rust/issues/47115#issuecomment-403090815
and https://github.com/rust-lang/rust/issues/47115#issuecomment-424053547
2018-09-24 22:43:06 +03:00
Clément Renault
78bccb3540 Introduce the partition_dedup/by/by_key methods for slices 2018-09-23 09:09:54 +02:00
Jorge Aparicio
af101fdc33 address Mark-Simulacrum comments 2018-09-22 21:01:21 +02:00
Jorge Aparicio
851acdd22d core: fix deprecated warnings 2018-09-22 21:01:21 +02:00
Pietro Albini
452d9d07a0
Rollup merge of #54422 - ljedrz:simplify_first_last, r=Mark-Simulacrum
Simplify slice's first(_mut) and last(_mut) with get

This change makes these functions easier to read and interpret. I haven't detected any difference in performance locally.

r? @Mark-Simulacrum
2018-09-22 09:56:43 +02:00
ljedrz
48f46056b7 Simplify slice's first(_mut) and last(_mut) with get 2018-09-21 13:06:44 +02:00
Jack O'Connor
b3ffd3344e define copy_within on slices
This is a safe wrapper around ptr::copy, for regions within a single
slice. Previously, safe in-place copying was only available as a side
effect of Vec::drain.
2018-09-20 00:57:05 -04:00
Tobias Bucher
ebffb67295 Adjust the docs of from_raw_parts to match the implementation 2018-09-17 18:34:15 +02:00
Tobias Bucher
11c6318380 Use more obvious calculation for slice size check 2018-09-17 18:09:04 +02:00
bors
f4819878cd Auto merge of #53754 - RalfJung:slice_align_to, r=alexcrichton
stabilize slice_align_to

This is very hard to implement correctly, and leads to [serious bugs](https://github.com/llogiq/bytecount/pull/42) when done incorrectly. Moreover, this is needed to be able to run code that opportunistically exploits alignment on miri. So code using `align_to`/`align_to_mut` gets the benefit of a well-tested implementation *and* of being able to run in miri to test for (some kinds of) UB.

This PR also clarifies the guarantee wrt. the middle part being as long as possible.  Should the docs say under which circumstances the middle part could be shorter? Currently, that can only happen when running in miri.
2018-09-16 07:22:24 +00:00
Tobias Bucher
5d9086f123 Fix overflow in from_raw_parts size check 2018-09-11 11:44:28 +02:00
Tobias Bucher
1aac00fad3 A slice covering exactly half the address space is not OK 2018-09-10 07:53:42 +02:00
Tobias Bucher
7b77508e23 Add debug_assert!s to slice::from_raw_parts
Copy the documentation over to `slice::from_raw_parts_mut`.
2018-09-04 11:39:28 +02:00
Tobias Bucher
1975b8d21b Document that slices cannot be larger than isize::MAX bytes
Fixes #53676.
2018-09-04 11:35:49 +02:00
Tobias Bucher
fe56878a24 Link to more detailed docs in slice::from_raw_parts_mut 2018-09-03 18:29:08 +02:00
Tobias Bucher
890d04d00f Fix a comment in src/libcore/slice/mod.rs 2018-08-29 15:23:06 +02:00
Ralf Jung
f4f114002e stabilize slice_align_to 2018-08-28 10:41:53 +02:00
kennytm
0dd88c9797
Rollup merge of #53329 - frewsxcv:frewsxcv-ptr-add-sub, r=RalfJung
Replace usages of ptr::offset with ptr::{add,sub}.

Rust provides these helper methods – so let's use them!
2018-08-21 22:05:30 +08:00
kennytm
b5519db323
Rollup merge of #53496 - matthiaskrgr:codespell_08_2018, r=varkor
Fix typos found by codespell.
2018-08-21 17:51:49 +08:00
Corey Farwell
993fb93464 Replace usages of ptr::offset with ptr::{add,sub}. 2018-08-20 07:28:34 -04:00
Matthias Krüger
71120ef1e5 Fix typos found by codespell. 2018-08-19 17:41:28 +02:00
bors
8928de7439 Auto merge of #52972 - RalfJung:from_raw_parts_align, r=alexcrichton
debug_assert to ensure that from_raw_parts is only used properly aligned

This does not help nearly as much as I would hope because everybody uses the distributed libstd which is compiled without debug assertions. For this reason, I am not sure if this is even worth it. OTOH, this would have caught the misalignment fixed by https://github.com/rust-lang/rust/issues/42789 *if* there had been any tests actually using ZSTs with alignment >1 (we have a CI runner which has debug assertions in libstd enabled), and it seems to currently [fail in the rg testsuite](https://ci.appveyor.com/project/rust-lang/rust/build/1.0.8403/job/v7dfdcgn8ay5j6sb). So maybe it is worth it, after all.

I have seen the attribute `#[rustc_inherit_overflow_checks]` in some places, does that make it so that the *caller's* debug status is relevant? Is there a similar attribute for `debug_assert!`? That could even subsume `rustc_inherit_overflow_checks`: Something like `rustc_inherit_debug_flag` could affect *all* places that change the generated code depending on whether we are in debug or release mode. In fact, given that we have to keep around the MIR for generic functions anyway, is there ever a reason *not* to handle the debug flag that way? I guess currently we apply debug flags like `cfg` so this is dropped early during the MIR pipeline?

EDIT: I learned from @eddyb that because of how `debug_assert!` works, this is not realistic. Well, we could still have it for the rustc CI runs and then maybe, eventually, when libstd gets compiled client-side and there is both a debug and a release build... then this will also benefit users.^^
2018-08-19 09:40:36 +00:00