Commit graph

7291 commits

Author SHA1 Message Date
oberien
6caec2c049 Document TrustedLen guarantees more explicitly 2018-02-04 16:09:32 +01:00
oberien
75474ff132 TrustedLen for Repeat / RangeFrom test cases 2018-02-04 16:09:32 +01:00
oberien
a1809d5784 Implement TrustedLen for Take<Repeat> and Take<RangeFrom> 2018-02-04 16:09:32 +01:00
kennytm
3a0a423d61
Rollup merge of #47973 - perlun:patch-1, r=dtolnay
copy_nonoverlapping example: Fixed typo

The comment referred to a variable using an incorrect name. (it has probably been renamed since the comment was written, or the comment was copied elsewhere - I noted the example in libcore has the `tmp` name for the temporary variable.)
2018-02-03 16:08:27 +08:00
Per Lundberg
321e429b9f
copy_nonoverlapping example: Fixed typo
The comment referred to a variable using an incorrect name. (it has probably been renamed since the comment was written, or the comment was copied elsewhere - I noted the example in libcore has the `tmp` name for the temporary variable.)
2018-02-02 22:44:14 +02:00
kennytm
7c6380cdcf
Rollup merge of #47919 - varkor:to_degrees-precision, r=rkruppe Use constant for 180/π in to_degrees The current f32|f64.to_degrees implementation uses a division to calculate 180/π, which causes a loss of precision. Using a constant is still not perfect (implementing a maximally-precise algorithm would come with a high performance cost), but improves precision with a minimal change. As per the discussion in #29944, this fixes #29944 (the costs of improving the precision further would not outweigh the gains). 2018-02-02 22:48:49 +08:00
kennytm
3600bfb3f0
Rollup merge of #46156 - SimonSapin:patch-14, r=withoutboats
Document the size of bool
2018-02-02 16:29:11 +08:00
varkor
e34c31bf02 Use constant for 180/π in to_degrees
The current `f32|f64.to_degrees` implementation uses a division to calculate 180/π, which causes a loss of precision. Using a constant is still not perfect (implementing a maximally-precise algorithm would come with a high performance cost), but improves precision with a minimal change.
2018-02-01 18:35:51 +00:00
kennytm
af95302d3c
Rollup merge of #47552 - oberien:stepby-nth, r=dtolnay
Specialize StepBy::nth

This allows optimizations of implementations of the inner iterator's `.nth` method.
2018-02-01 02:34:15 +08:00
kennytm
0370717296 Rollup merge of #47840 - penpalperson:master, r=bluss
Marked Debug implementations for primitive types as #[inline]

Change for issue #47792.
2018-01-31 16:36:06 +08:00
penpalperson
deba3890c5 Changed back inline markings. 2018-01-30 05:31:38 -07:00
Clar Charr
aab712cbc8 Move time::Duration to libcore 2018-01-29 18:16:43 -05:00
penpalperson
81e49597bf Added inline to fmt for debug implementations of primitives. 2018-01-28 21:55:05 -07:00
bors
21882aad72 Auto merge of #47204 - varkor:unsafecell-into_inner-safe, r=alexcrichton
Make UnsafeCell::into_inner safe

This fixes #35067. It will require a Crater run as discussed in that
issue.
2018-01-28 19:01:51 +00:00
bors
0119b44270 Auto merge of #47772 - arthurprs:iter-position-bounds-check, r=dtolnay
Use the slice length to hint the optimizer about iter.position result

Using the len of the iterator doesn't give the same result.
That's also why we can't generalize it to all TrustedLen iterators.

Problem demo: https://godbolt.org/g/MXg2ae
Fix demo: https://godbolt.org/g/P8q5aZ

Second attempt of #47333
Third attempt of #45501
Fixes #45964
2018-01-28 10:41:34 +00:00
arthurprs
4f7109a424 Use the slice length to hint the optimizer
Using the len of the iterator doesn't give the same result.
That's also why we can't generalize it to all TrustedLen iterators.
2018-01-26 12:49:14 +01:00
bors
9758ff9c0b Auto merge of #47299 - cramertj:unsafe-placer, r=alexcrichton
Make core::ops::Place an unsafe trait

Consumers of `Place` would reasonably expect that the `pointer` function returns a valid pointer to memory that can actually be written to.
2018-01-24 07:22:22 +00:00
bors
a538fe7ce7 Auto merge of #46931 - clarcharr:float_bits_core, r=alexcrichton
Expose float from_bits and to_bits in libcore.

These methods have no dependencies on libm and thus should be offered in libcore.
2018-01-24 03:02:15 +00:00
Guillaume Gomez
0e270fc842 Rollup merge of #47193 - cramertj:result-opts, r=TimNN
Add transpose conversions for nested Option and Result

These impls are useful when working with combinator
methods that expect an option or a result, but you
have a `Result<Option<T>, E>` instead of an `Option<Result<T, E>>`
or vice versa.
2018-01-20 22:32:42 +01:00
Simon Sapin
76b686f78d Rename NonNull::empty to dangling. 2018-01-20 11:09:23 +01:00
Simon Sapin
a1db237cd4 Preserve formatting options in Debug for NonNull/Unique 2018-01-20 11:09:23 +01:00
Simon Sapin
943a9e707c Fix some doc-comment examples for earlier API refactor
https://github.com/rust-lang/rust/pull/41064
2018-01-20 11:09:23 +01:00
Simon Sapin
55c50cd8ac Stabilize std::ptr::NonNull 2018-01-20 11:09:23 +01:00
Simon Sapin
2d51e74580 Remove a deprecated (renamed) and unstable method of NonNull 2018-01-20 11:09:23 +01:00
Simon Sapin
c97c1f7dc3 Mark Unique as perma-unstable, with the feature renamed to ptr_internals. 2018-01-20 11:09:23 +01:00
Simon Sapin
fb03a49c25 Replace Unique<T> with NonZero<T> in Alloc trait 2018-01-20 10:55:16 +01:00
Simon Sapin
f19baf0977 Rename std::ptr::Shared to NonNull
`Shared` is now a deprecated `type` alias.

CC https://github.com/rust-lang/rust/issues/27730#issuecomment-352800629
2018-01-20 10:55:16 +01:00
Corey Farwell
ba5d7a66e8 Implement Debug for ptr::Shared and ptr::Unique.
Fixes https://github.com/rust-lang/rust/issues/46755.
2018-01-20 10:55:16 +01:00
oberien
4a0da4cf2c Spacing 2018-01-20 00:41:21 +01:00
oberien
f72b7f7c86 Optimize StepBy::nth overflow handling 2018-01-19 22:34:22 +01:00
oberien
f08dec114f Handle Overflow 2018-01-19 21:07:01 +01:00
oberien
d33cc12eed Unit Tests 2018-01-19 14:55:34 +01:00
oberien
5850f0b742 Fix off-by-ones 2018-01-19 14:55:25 +01:00
oberien
37771d42d7 Specialize StepBy::nth 2018-01-18 20:49:32 +01:00
kennytm
a588dcff28 Rollup merge of #47497 - goffrie:patch-1, r=dtolnay
Remove incorrect `Default::default` links, add a new one

`map_or` and `map_or_else` don't use `Default::default`, but `unwrap_or_default` does.
2018-01-18 01:57:28 +08:00
kennytm
e7087f0f4f Rollup merge of #47404 - integer32llc:reexport-to-re-export, r=steveklabnik
Standardize on "re-export" rather than "reexport"

While working on the book with our editors, it was brought to our attention that we're not consistent with when we use "re-export" versus "reexport". For the book, we've decided (with our editors) to go with "re-export"; in prose, I think that looks better. In code, I'm fine with "reexport".

However, the rustdoc generated section is currently "Reexports", so when we have a screenshot of generated documentation with the prose where we use "re-export", it's inconsistent.

It's too late to fix this for the book because we're using 1.21.0 for the output in the book, and it's really only one spot so it's not a huge deal, but I'd like to advocate for changing the documentation header so that a future edition of the book can be consistent.

The first commit here only changes the documentation section heading text and rustdoc documentation that references it. This is the commit that's most important to me.

The second commit changes error messages and associated tests to also be consistent with the use of re-export. This is the next most important commit to me, but I could be argued out of this one because then it won't match code like the `macro_reexports` feature name, which ostensibly should change to `macro_re_exports` to be most consistent but I didn't want to change code.

The last commit changes re-export anywhere else in prose: either in documentation comments or regular comments. This is least important as most of them aren't user-visible. Instances like these will likely sneak back in over time. I'm totally fine dropping this commit if anyone wants, but [the hobgoblins made me do it](http://www.bartleby.com/100/420.47.html) and it sets a good example.

r? @steveklabnik
2018-01-18 01:57:15 +08:00
kennytm
175dd84ed8 Rollup merge of #47333 - arthurprs:iter-position-bounds-check, r=dtolnay
Optimize slice.{r}position result bounds check

Second attempt of https://github.com/rust-lang/rust/pull/45501
Fixes https://github.com/rust-lang/rust/issues/45964

Demo: https://godbolt.org/g/N4mBHp
2018-01-18 01:57:13 +08:00
Geoffry Song
46c20c0990
Remove incorrect Default::default links, add a new one
`map_or` and `map_or_else` don't use `Default::default`, but `unwrap_or_default` does.
2018-01-16 11:43:57 -08:00
Taylor Cramer
f25f468709 Adjust wording of Placer trait safety requirements 2018-01-16 08:51:24 -08:00
Carol (Nichols || Goulding)
e168aa385b
Reexport -> re-export in prose and documentation comments 2018-01-15 13:36:53 -05:00
kennytm
5d0474ad73
Rollup merge of #47126 - sdroege:exact-chunks, r=bluss
Add slice::ExactChunks and ::ExactChunksMut iterators

These guarantee that always the requested slice size will be returned
and any leftoever elements at the end will be ignored. It allows llvm to
get rid of bounds checks in the code using the iterator.

This is inspired by the same iterators provided by ndarray.

Fixes https://github.com/rust-lang/rust/issues/47115

I'll add unit tests for all this if the general idea and behaviour makes sense for everybody.
Also see https://github.com/rust-lang/rust/issues/47115#issuecomment-354715511 for an example what this improves.
2018-01-15 18:49:31 +08:00
leonardo.yvens
f93183adb4 Remove impl Foo for .. in favor of auto trait Foo
No longer parse it.
Remove AutoTrait variant from AST and HIR.
Remove backwards compatibility lint.
Remove coherence checks, they make no sense for the new syntax.
Remove from rustdoc.
2018-01-13 18:48:00 +03:00
Sebastian Dröge
5f4fc82142 Add unit tests for exact_chunks/exact_chunks_mut
These are basically modified copies of the chunks/chunks_mut tests.
2018-01-13 12:19:01 +02:00
Sebastian Dröge
ed774838b3 Test the whole chunks instead of just an element in the chunks/chunks_mut tests
Easy enough to do and ensures that the whole chunk is as expected
instead of just the element that was looked at before.
2018-01-13 12:19:00 +02:00
Sebastian Dröge
6bf1dfdd76 Implement TrustedRandomAccess for slice::{ExactChunks, ExactChunksMut} 2018-01-13 12:18:57 +02:00
Sebastian Dröge
cea36f447e Remove useless assertion 2018-01-13 12:18:56 +02:00
Sebastian Dröge
aa0c08a22c Apply review comments from @bluss
- Simplify nth() by making use of the fact that the slice is evenly
  divisible by the chunk size, and calling next() instead of
  duplicating it
- Call next_back() in last(), they are equivalent
- Implement ExactSizeIterator::is_empty()
2018-01-13 12:18:55 +02:00
Sebastian Dröge
51d546f4aa Add slice::ExactChunks and ::ExactChunksMut iterators
These guarantee that always the requested slice size will be returned
and any leftoever elements at the end will be ignored. It allows llvm to
get rid of bounds checks in the code using the iterator.

This is inspired by the same iterators provided by ndarray.

See https://github.com/rust-lang/rust/issues/47115
2018-01-13 12:18:46 +02:00
arthurprs
0b56ab0f7b Optimize slice.{r}position result bounds check 2018-01-12 22:58:25 +01:00
kennytm
722838fa72
Rollup merge of #47365 - Diggsey:issue-42630, r=alexcrichton
Re-enable num tests on wasm

Issue #42630 was closed but the tests are still ignored, supposedly they should pass now.
2018-01-13 03:17:05 +08:00