7033 Commits

Author SHA1 Message Date
Alex Crichton
64c9fd6832 Rollup merge of #44657 - Ixrec:patch-1, r=eddyb
Replace str's transmute() calls with pointer casts

After the following conversation in #rust-lang:
```
[14:43:50] <Ixrec> TIL the implementation of from_utf_unchecked is literally just "mem::transmute(x)"
[14:43:59] <Ixrec> no wonder people keep saying transmute is overpowered
[15:15:30] <eddyb> Ixrec: it should be a pointer cast lol
[15:15:46] <eddyb> unless it doesn't let you
[16:50:34] <Ixrec> https://play.rust-lang.org/?gist=d1e6b629ad9ec1baf64ce261c63845e6&version=stable seems like it does let me
[16:52:35] <eddyb> Ixrec: yeah that's the preferred impl
[16:52:46] <eddyb> Ixrec: it just wasn't in 1.0
[16:52:50] <eddyb> IIRC
[16:53:00] <eddyb> (something something fat pointers)
```
Since I already wrote half of the preferred impls in the playground, might as well make an actual PR.
2017-09-18 11:04:25 -05:00
Will Speak
ebd0e4f199 Add Example of IntoIterator as Trait Bound to Docs
Part of #44600.
2017-09-18 07:41:38 +01:00
Oliver Schneider
2787a285bd
Add <*const T>::align_offset and use it in memchr 2017-09-17 21:30:58 +02:00
Ixrec
38fa340ba2 missed a 'mut' 2017-09-17 17:11:42 +01:00
leonardo.yvens
0741645230 Remove unused str_eq lang item
It's not a lang item anymore. Also remove outdated note.
2017-09-17 13:04:49 -03:00
Ixrec
2633b85ab2 Replace str's transmute() calls with pointer casts
After the following conversation in #rust-lang:
```
[14:43:50] <Ixrec> TIL the implementation of from_utf_unchecked is literally just "mem::transmute(x)"
[14:43:59] <Ixrec> no wonder people keep saying transmute is overpowered
[15:15:30] <eddyb> Ixrec: it should be a pointer cast lol
[15:15:46] <eddyb> unless it doesn't let you
[16:50:34] <Ixrec> https://play.rust-lang.org/?gist=d1e6b629ad9ec1baf64ce261c63845e6&version=stable seems like it does let me
[16:52:35] <eddyb> Ixrec: yeah that's the preferred impl
[16:52:46] <eddyb> Ixrec: it just wasn't in 1.0
[16:52:50] <eddyb> IIRC
[16:53:00] <eddyb> (something something fat pointers)
```
Since I already wrote half of the preferred impls in the playground, might as well make an actual PR.
2017-09-17 17:03:56 +01:00
Tim Neumann
d046421743 Rollup merge of #44639 - budziq:stabilize_needs_drop, r=dtolnay
stabilized needs_drop (fixes #41890)

fixes #41890
2017-09-17 13:19:14 +02:00
Tim Neumann
064f718247 Rollup merge of #44595 - budziq:stabilize_compiler_fences, r=alexcrichton
stabilized compiler_fences (fixes #41091)

I did not know what to proceed with "unstable-book" entry. The feature would no longer be unstable so I have deleted it. If it was the wrong call I'll revert it (unfortunately his case is not described in the CONTRIBUTING.md).
2017-09-17 13:19:09 +02:00
Tim Neumann
1437e53f9f Rollup merge of #44567 - budziq:stabilize_iterator_for_each, r=alexcrichton
stabilized iterator_for_each (closes #42986)

Also updated clippy and rls as these use the iterator_for_each

I've made my first PR's today so most likely I've done something wrong. Sorry about that!
2017-09-17 13:19:08 +02:00
bors
71e37674a1 Auto merge of #44634 - alexcrichton:rollup, r=alexcrichton
Rollup of 19 pull requests

- Successful merges: #44273, #44356, #44395, #44531, #44537, #44542, #44560, #44567, #44574, #44577, #44586, #44589, #44590, #44593, #44598, #44606, #44609, #44616, #44631
- Failed merges:
2017-09-17 01:51:55 +00:00
Alex Crichton
3cc135afa3 Rollup merge of #44593 - budziq:stabilize_ord_max_min, r=alexcrichton
stabilized ord_max_min (fixes #25663)
2017-09-16 17:09:40 -07:00
Alex Crichton
3dbd9c5489 Rollup merge of #44577 - cuviper:flat_map-fold, r=alexcrichton
Customize `<FlatMap as Iterator>::fold`

`FlatMap` can use internal iteration for its `fold`, which shows a
performance advantage in the new benchmarks:

    test iter::bench_flat_map_chain_ref_sum ... bench:   4,354,111 ns/iter (+/- 108,871)
    test iter::bench_flat_map_chain_sum     ... bench:     468,167 ns/iter (+/- 2,274)
    test iter::bench_flat_map_ref_sum       ... bench:     449,616 ns/iter (+/- 6,257)
    test iter::bench_flat_map_sum           ... bench:     348,010 ns/iter (+/- 1,227)

... where the "ref" benches are using `by_ref()` that isn't optimized.
So this change shows a decent advantage on its own, but much more when
combined with a `chain` iterator that also optimizes `fold`.
2017-09-16 17:09:40 -07:00
bors
b492405b1f Auto merge of #43989 - circuitfox:sliceext-binary-search-sig, r=alexcrichton
Remove Borrow bound from SliceExt::binary_search

#37761 added a Borrow bound to `binary_search` and `binary_search_by_key` in `core::SliceExt`, but did not add it to the methods in `std::slice`. #41590 attempted to add this bound to `std::slice` but was not merged due to breakage. This PR removes the bound in `core::SliceExt`, so that these methods will have the same signature in `core` and `std`.

Fixes #41561
2017-09-16 22:20:55 +00:00
Michal Budzynski
04855950b9 stabilized needs_drop (fixes #41890) 2017-09-16 23:41:04 +02:00
Michal Budzynski
b7152901ce stabilized iterator_for_each (closes #42986)
updated clippy and rls as it uses the iterator_for_each
2017-09-16 22:49:40 +02:00
Michal Budzynski
5f62c0c864 Added more text from unstable-book to compiler_fence docs 2017-09-16 22:18:46 +02:00
Michal Budzynski
9a60bb077c Added example to compiler_fence docs taken from unstable-book 2017-09-16 22:18:46 +02:00
Michal Budzynski
8a11172d6b stabilized compiler_fences (fixes #41091) 2017-09-16 22:18:46 +02:00
bors
277476c4fb Auto merge of #43964 - Gankro:unsafe-reform, r=sfackler
implement unsafe pointer methods

I also cleaned up some existing documentation a bit here or there since I was doing so much auditing of it. Most notably I significantly rewrote the `offset` docs to clarify safety (`*const` and `*mut`'s offset docs had actually diverged).
2017-09-16 19:54:58 +00:00
bors
ae8efdc87d Auto merge of #43017 - durka:stabilize-const-invocation, r=eddyb
Individualize feature gates for const fn invocation

This PR changes the meaning of `#![feature(const_fn)]` so it is only required to declare a const fn but not to call one. Based on discussion at #24111. I was hoping we could have an FCP here in order to move that conversation forward.

This sets the stage for future stabilization of the constness of several functions in the standard library (listed below), so could someone please tag the lang team for review.

- `std::cell`
    - `Cell::new`
    - `RefCell::new`
    - `UnsafeCell::new`
- `std::mem`
    - `size_of`
    - `align_of`
- `std::ptr`
    - `null`
    - `null_mut`
- `std::sync`
    - `atomic`
        - `Atomic{Bool,Ptr,Isize,Usize}::new`
    - `once`
        - `Once::new`
- primitives
    - `{integer}::min_value`
    - `{integer}::max_value`

Some other functions are const but they are also unstable or hidden, e.g. `Unique::new` so they don't have to be considered at this time.

After this stabilization, the following `*_INIT` constants in the standard library can be deprecated. I wasn't sure whether to include those deprecations in the current PR.

- `std::sync`
    - `atomic`
        - `ATOMIC_{BOOL,ISIZE,USIZE}_INIT`
    - `once`
        - `ONCE_INIT`
2017-09-16 17:02:17 +00:00
Alex Burka
681e5da61e change #![feature(const_fn)] to specific gates 2017-09-16 15:53:02 +00:00
Josh Stone
351f56a603 Add a specific test for FlatMap::fold 2017-09-15 10:30:56 -07:00
Michal Budzynski
5398e03704 stabilized ord_max_min (fixes #25663) 2017-09-15 12:54:03 +02:00
Corey Farwell
ffd286ba6f Rollup merge of #44552 - durka:patch-42, r=alexcrichton
update "since" for discriminant_value

It's [going](https://github.com/rust-lang/rust/pull/44263#issuecomment-329257597) to be backported to beta.

r? @alexcrichton
2017-09-14 22:32:48 -04:00
Corey Farwell
3e478fd512 Rollup merge of #44536 - Havvy:transmute-docs, r=steveklabnik
Fix example in transmute; add safety requirement to Vec::from_raw_parts

This fixes the second bullet point on #44281 and also removes some incorrect information.
2017-09-14 22:32:47 -04:00
Corey Farwell
592cafeb3d Rollup merge of #44477 - napen123:master, r=frewsxcv
Add doc examples to str::from_utf8_unchecked_mut

Fixes #44461
2017-09-14 22:32:42 -04:00
Corey Farwell
65b9b56463 Rollup merge of #44472 - smt923:master, r=frewsxcv
Add short doc examples for str::from_utf8_mut

Fixes #44462
2017-09-14 22:32:40 -04:00
Josh Stone
61a7703e55 Customize <FlatMap as Iterator>::fold
`FlatMap` can use internal iteration for its `fold`, which shows a
performance advantage in the new benchmarks:

    test iter::bench_flat_map_chain_ref_sum ... bench:   4,354,111 ns/iter (+/- 108,871)
    test iter::bench_flat_map_chain_sum     ... bench:     468,167 ns/iter (+/- 2,274)
    test iter::bench_flat_map_ref_sum       ... bench:     449,616 ns/iter (+/- 6,257)
    test iter::bench_flat_map_sum           ... bench:     348,010 ns/iter (+/- 1,227)

... where the "ref" benches are using `by_ref()` that isn't optimized.
So this change shows a decent advantage on its own, but much more when
combined with a `chain` iterator that also optimizes `fold`.
2017-09-14 13:51:32 -07:00
Alex Burka
5f43357782 update "since" for discriminant_value
It's going to be backported to beta.
2017-09-13 17:29:55 -04:00
Havvy
9dd2ee1942 Fix example in transmute; add safety requirement to Vec::from_raw_parts 2017-09-13 04:27:40 -07:00
Ethan Dagner
8adf50d90e Remove Invalid UTF-8 from str::from_utf8_unchecked_mut 2017-09-12 17:30:44 -06:00
bors
2fdccaffe6 Auto merge of #44015 - kennytm:hasher, r=alexcrichton
impl Hasher for {&mut Hasher, Box<Hasher>}

**Rationale:** The `Hash` trait has `fn hash<H: Hasher>(&self, state: &mut H)`, which can only accept a `Sized` hasher, even if the `Hasher` trait is object-safe. We cannot retroactively add the `?Sized` bound without breaking stability, thus implementing `Hasher` to a trait object reference is the next best solution.

**Warning:** These `impl` are insta-stable, and should need an FCP. I don't think a full RFC is necessary.
2017-09-12 21:39:08 +00:00
kennytm
143e2dcd5c
Disable the new Hasher tests on Emscripten. 2017-09-12 17:28:07 +08:00
kennytm
0bbe468271
impl Hasher for {&mut Hasher, Box<Hasher>} 2017-09-12 17:28:07 +08:00
bors
8fc0fc8c2d Auto merge of #44310 - ldr709:master, r=BurntSushi
Additional traits for std::mem::ManuallyDrop

The first commit adds `Clone` and `Copy` trait implementations for `ManuallyDrop`. Although `Drop` and `Copy` cannot be used together, this may be useful for generics.

The second commit adds implementations common traits. I do not think this is necessary, as they could be implemented in a wrapper type outside the standard library, but it would make `ManuallyDrop` more convenient to use.
2017-09-12 07:13:40 +00:00
Alexis Beingessner
4f245073b2 implement unsafe pointer methods 2017-09-10 16:09:18 -04:00
Ethan Dagner
18ef0de4bc Add doc examples to str::from_utf8_unchecked_mut
Fixes #44461
2017-09-10 12:27:57 -06:00
smt923
204414bcf4 Actually fix the trailing whitespace 2017-09-10 14:25:23 +01:00
smt923
303b7c2410 Fix markdown link for Utf8Error 2017-09-10 14:12:23 +01:00
smt923
f20b030f02 Fix trailing whitespace 2017-09-10 14:08:20 +01:00
Eduard-Mihai Burtescu
10f66bd6e4 Use rvalue promotion to 'static instead of static items. 2017-09-10 11:20:27 +03:00
smt923
51bbd69575 Fix incorrect markdown title 2017-09-10 04:33:24 +01:00
smt923
cd1bf6df4a Added short examples for 'str::from_utf8_mut' 2017-09-10 04:10:19 +01:00
bors
929b878262 Auto merge of #44438 - Xaeroxe:clamp, r=Mark-Simulacrum
Revert clamp

Revert clamp per https://github.com/rust-lang/rust/issues/44095#issuecomment-328218316 while we take time to assess the potential backwards compatibility damage done by it.
2017-09-09 09:13:03 +00:00
Jacob Kiesel
db5b5f9706 Revert "Add clamp functions"
This reverts commit c589f867f89d4e6e48c6602aed8e878208d4822f.
2017-09-08 16:07:21 -06:00
Jacob Kiesel
8b96167004 Revert "Fix documentation and formatting."
This reverts commit 2e34ff767113c6a15c5862b0646ca9ad7ffd81b1.
2017-09-08 16:07:13 -06:00
Mark Simulacrum
e7470c9f18 Rollup merge of #44328 - mcomstock:from-str-doc-fix, r=steveklabnik
Removed the incorrect documentation for from_str

Fixes #44242.
2017-09-06 18:28:00 -06:00
Mark Simulacrum
b8812a2179 Rollup merge of #44206 - MarkMcCaskey:master, r=steveklabnik
update unimplemented! docs

For #42628 (updating docs from changes from #42155).

Initial changes made to make `unimplemented!` doc comments look more like `unreachable!` and remove statement about the panic message.

r? @steveklabnik
2017-09-06 18:27:46 -06:00
Mark Simulacrum
44351edb64 Rollup merge of #44097 - Xaeroxe:clamp, r=burntsushi
Add clamp functions

Implementation of clamp feature:

Tracking issue: https://github.com/rust-lang/rust/issues/44095
RFC: https://github.com/rust-lang/rfcs/pull/1961
2017-09-06 18:27:45 -06:00
Max Comstock
7d94ca618c Removed the incorrect documentation for from_str 2017-09-04 22:16:15 -04:00