Commit graph

7447 commits

Author SHA1 Message Date
Manish Goregaokar
7c581b08fa
Rollup merge of #48738 - Songbird0:parseinterror_potential_cause, r=joshtriplett
Add a potential cause raising `ParseIntError`.

Initially, I wanted to add it directly to the documentation of `str. parse()` method, I finally found that it was more relevant (I hope so?) to directly document the structure in question. I've added a scenario, in which we could all get caught at least once, to make it easier to diagnose the problem when parsing integers.
2018-03-08 11:25:58 -08:00
Oliver Schneider
918b6d7633
Produce instead of pointers 2018-03-08 08:08:14 +01:00
Matt Brubeck
d04362f23d Stabilize option_ref_mut_cloned
Closes #43738.
2018-03-06 14:40:26 -08:00
bors
2789b067da Auto merge of #48768 - kennytm:rollup, r=kennytm
Rollup of 14 pull requests

- Successful merges: #48403, #48432, #48546, #48573, #48590, #48657, #48727, #48732, #48753, #48754, #48761, #48474, #48507, #47463
- Failed merges:
2018-03-06 15:01:21 +00:00
kennytm
8e3493d459
Rollup merge of #47463 - bluss:fused-iterator, r=alexcrichton
Stabilize FusedIterator

FusedIterator is a marker trait that promises that the implementing
iterator continues to return `None` from `.next()` once it has returned
`None` once (and/or `.next_back()`, if implemented).

The effects of FusedIterator are already widely available through
`.fuse()`, but with stable `FusedIterator`, stable Rust users can
implement this trait for their iterators when appropriate.

Closes #35602
2018-03-06 20:52:37 +08:00
kennytm
ee9425214b
Rollup merge of #48474 - christianpoveda:new_cell_docs, r=steveklabnik
New Cell docs

This fixes https://github.com/rust-lang/rust/issues/44061
2018-03-06 20:52:35 +08:00
kennytm
6b8984dfc8
Rollup merge of #48590 - tshepang:more-simple, r=frewsxcv
doc: no need for the reference

Also, we are well within line length limit
2018-03-06 16:25:33 +08:00
kennytm
fe77f5d764
Rollup merge of #48573 - Amanieu:bitreverse2, r=sfackler
Add functions for reversing the bit pattern in an integer

I'm reviving PR #32798 now that the LLVM issues have been resolved.

> This adds the bitreverse intrinsic and adds a reverse_bits function to all integer types.
2018-03-06 16:25:32 +08:00
kennytm
43de95ca5b
Rollup merge of #48403 - lukaslueg:casted, r=steveklabnik
Fix spelling s/casted/cast/

r? @GuillaumeGomez
2018-03-06 16:25:28 +08:00
bors
6f2100b92c Auto merge of #48509 - Phlosioneer:option-doc-change, r=TimNN
Slight modification to the as_ref example of std::option::Option

A user in a reddit thread was confused by the name of the variable
"num_as_int"; they thought the example was trying to convert the
string "10" as if it were binary 2 by calling str::len(). In reality,
the example is simply demonstrating how to take an immutable reference
to the value of an Option. The confusion comes from the coincidence
that the length of the string "10" is also its binary representation,
and the implication from the variable names that a conversion was
occuring ("num_as_str" to "num_as_int").

This PR changes the example number to 12 instead of 10, and changes
the variable name from "num_as_int" to "num_length" to better
communicate what the example is doing.

The reddit thread:
https://www.reddit.com/r/rust/comments/7zpvev/notyetawesome_rust_what_use_cases_would_you_like/dur39xw/
2018-03-06 06:14:11 +00:00
Amanieu d'Antras
24fb4b7669 Add reverse_bits to integer types 2018-03-06 03:31:53 +00:00
Songbird0
6d71aa47fb
Fix spelling error for whitespaces. 2018-03-05 14:33:37 +01:00
Songbird0
ef1aae1cc2
Modify wording and remove useless whitespaces. 2018-03-05 03:57:33 +01:00
Songbird0
247fc38aeb
Tidy error: add a new line
The error was:

```
[00:05:25] tidy error: /checkout/src/libcore/num/mod.rs:3848: trailing whitespace
[00:05:25] tidy error: /checkout/src/libcore/num/mod.rs:3851: line longer than 100 chars
[00:05:25] tidy error: /checkout/src/libcore/num/mod.rs:3851: trailing whitespace
[00:05:26] some tidy checks failed
```
The line was truncated to 92 characters.
2018-03-04 22:18:42 +01:00
Songbird0
c68440cad4
Add a potential cause raising ParseIntError.
Initially, I wanted to add it directly to the documentation of `str. parse()' method, I finally found that it was more relevant (I hope so?) to directly document the structure in question. I've added a scenario, in which we could all get caught at least once, to make it easier to diagnose the problem when parsing integers.
2018-03-04 21:59:53 +01:00
bors
e026b59cf4 Auto merge of #48694 - kennytm:rollup, r=kennytm
Rollup of 8 pull requests

- Successful merges: #48283, #48466, #48569, #48629, #48637, #48680, #48513, #48664
- Failed merges:
2018-03-03 19:40:21 +00:00
kennytm
6f07aaa428
Rollup merge of #48513 - alexcrichton:simd, r=JoshTriplett
std: Add `arch` and `simd` modules

This commit imports the `stdsimd` crate into the standard library,
creating an `arch` and `simd` module inside of both libcore and libstd.
Both of these modules are **unstable** and will continue to be so until
RFC 2335 is stabilized.

As a brief recap, the modules are organized as so:

* `arch` contains all current architectures with intrinsics, for example
  `std::arch::x86`, `std::arch::x86_64`, `std::arch::arm`, etc. These
  modules contain all of the intrinsics defined for the platform, like
  `_mm_set1_epi8`.
* In the standard library, the `arch` module also exports a
  `is_target_feature_detected` macro which performs runtime detection to
  determine whether a target feature is available at runtime.
* The `simd` module contains experimental versions of strongly-typed
  lane-aware SIMD primitives, to be fully fleshed out in a future RFC.

The main purpose of this commit is to start pulling in all these
intrinsics and such into the standard library on nightly and allow
testing and such. This'll help allow users to easily kick the tires and
see if intrinsics work as well as allow us to test out all the
infrastructure for moving the intrinsics into the standard library.
2018-03-04 02:17:38 +08:00
bors
3b8bd530b0 Auto merge of #48583 - dotdash:jt_assume, r=alexcrichton
Backport LLVM fixes for a JumpThreading / assume intrinsic bug

This fixes the original cause of #48116 and restores the assume intrinsic that was removed as a workaround.

r? @alexcrichton
2018-03-03 14:09:56 +00:00
Ulrik Sverdrup
c7c23fe948 core: Update stability attributes for FusedIterator 2018-03-03 14:23:05 +01:00
Ulrik Sverdrup
bc651cac8d core: Stabilize FusedIterator
FusedIterator is a marker trait that promises that the implementing
iterator continues to return `None` from `.next()` once it has returned
`None` once (and/or `.next_back()`, if implemented).

The effects of FusedIterator are already widely available through
`.fuse()`, but with stable `FusedIterator`, stable Rust users can
implement this trait for their iterators when appropriate.
2018-03-03 14:14:03 +01:00
Manish Goregaokar
3fa4bff31b
Rollup merge of #48635 - scottmcm:faster-zip-nth, r=kennytm
Fixes #47311.
r? @nrc
2018-03-02 22:01:29 -08:00
Manish Goregaokar
6fa14f0e5f
Rollup merge of #48628 - strake:reverse, r=sfackler
Fixes #47311.
r? @nrc
2018-03-02 22:01:27 -08:00
Manish Goregaokar
65253fd2eb
Rollup merge of #48259 - tinaun:patch-1, r=alexcrichton
Fixes #47311.
r? @nrc
2018-03-02 22:01:16 -08:00
tinaun
1011b8a3f1 Stabilize Unsafe Pointer Methods
also minor doc fixes.

Closes #43941
2018-03-02 19:20:36 -05:00
Alex Crichton
c72537f204 std: Add arch and simd modules
This commit imports the `stdsimd` crate into the standard library,
creating an `arch` and `simd` module inside of both libcore and libstd.
Both of these modules are **unstable** and will continue to be so until
RFC 2335 is stabilized.

As a brief recap, the modules are organized as so:

* `arch` contains all current architectures with intrinsics, for example
  `std::arch::x86`, `std::arch::x86_64`, `std::arch::arm`, etc. These
  modules contain all of the intrinsics defined for the platform, like
  `_mm_set1_epi8`.
* In the standard library, the `arch` module also exports a
  `is_target_feature_detected` macro which performs runtime detection to
  determine whether a target feature is available at runtime.
* The `simd` module contains experimental versions of strongly-typed
  lane-aware SIMD primitives, to be fully fleshed out in a future RFC.

The main purpose of this commit is to start pulling in all these
intrinsics and such into the standard library on nightly and allow
testing and such. This'll help allow users to easily kick the tires and
see if intrinsics work as well as allow us to test out all the
infrastructure for moving the intrinsics into the standard library.
2018-03-02 14:34:07 -08:00
Lukas Lueg
f7693c0633 Fix spelling s/casted/cast/ 2018-03-01 12:54:16 +01:00
Scott McMurray
5105fc1681 Fix braces 2018-03-01 02:29:46 -08:00
Scott McMurray
11fefeb61c Add a Zip::nth test for side effects 2018-03-01 02:17:50 -08:00
Scott McMurray
70d5a4600b Specialize Zip::nth for TrustedRandomAccess
Makes the bench asked about on URLO 58x faster :)
2018-03-01 01:57:25 -08:00
M Farkas-Dyck
25b69c4ede impl Default + Hash for ::core::cmp::Reverse 2018-02-28 21:00:48 -08:00
Manish Goregaokar
b2b9707696
Rollup merge of #48603 - pthariensflame:patch-1, r=frewsxcv
Fixes #47311.
r? @nrc
2018-02-28 15:09:31 -08:00
Manish Goregaokar
12515608cb
Rollup merge of #48380 - nikomatsakis:issue-48251-master, r=acrichto
Fixes #47311.
r? @nrc
2018-02-28 15:09:26 -08:00
Tshepang Lekhonkhobe
df8dd3fd3e doc: no need for the references
Also:
- apply some rustfmt love
- fix output of one example
2018-02-28 22:27:47 +02:00
Amanieu d'Antras
02e021b6d4 Add bitreverse intrinsic 2018-02-28 18:23:54 +00:00
kennytm
ef44e63da6
Rollup merge of #48450 - frewsxcv:frewsxcxv-stabilize-slice-rotatee, r=alexcrichton
Stabilize [T]::rotate_{left,right}

https://github.com/rust-lang/rust/issues/41891
2018-02-28 19:15:32 +08:00
kennytm
c599463cd1
Rollup merge of #48365 - Centril:docs/document-refcell-panics, r=frewsxcv
RefCell: document panics in Clone, PartialEq, PartialOrd, Ord.

This fixes #47400 by adding:

```rust
    /// # Panics
    ///
    /// Panics if the value is currently mutably borrowed.
```
to said impls. They may panic since they call `.borrow()`.
2018-02-28 19:15:29 +08:00
kennytm
85d7d0bf56
Rollup merge of #48321 - milesand:no_panic_pow, r=alexcrichton
Add non-panicking variants of pow for integer types

Currently, calling pow may panic in case of overflow, and the function does not have non-panicking counterparts. Thus, it would be beneficial to add those in.

Closes #48291.
Relevant tracking issue: #48320
2018-02-28 19:15:28 +08:00
bors
ddab91a5de Auto merge of #48056 - ExpHP:macro-commas, r=dtolnay
Comprehensively support trailing commas in std/core macros

I carefully organized the changes into four commits:

* Test cases
* Fixes for `macro_rules!` macros
* Fixes for builtin macros
* Docs for builtins

**I can easily scale this back to just the first two commits for now if such is desired.**

### Breaking (?) changes

* This fixes #48042, which is a breaking change that I hope people can agree is just a bugfix for an extremely dark corner case.

* To fix five of the builtins, this changes `syntax::ext::base::get_single_str_from_tts` to accept a trailing comma, and revises the documentation so that this aspect is not surprising. **I made this change under the (hopefully correct) understanding that `libsyntax` is private rustc implementation detail.** After reviewing all call sites (which were, you guessed it, *precisely those five macros*), I believe the revised semantics are closer to the intended spirit of the function.

### Changes which may require concensus

Up until now, it could be argued that some or all the following macros did not conceptually take a comma-separated list, because they only took one argument:

  * **`cfg(unix,)`** (most notable since cfg! is unique in taking a meta tag)
  * **`include{,_bytes,_str}("file.rs",)`**  (in item form this might be written as "`include!{"file.rs",}`" which is even slightly more odd)
  * **`compile_error("message",);`**
  * **`option_env!("PATH",)`**
  * **`try!(Ok(()),)`**

So I think these particular changes may require some sort of consensus.  **All of the fixes for builtins are included this list, so if we want to defer these decisions to later then I can scale this PR back to just the first two commits.**

### Other notes/general requests for comment

* Do we have a big checklist somewhere of "things to do when adding macros?" My hope is for `run-pass/macro-comma-support.rs` to remain comprehensive.
* Originally I wanted the tests to also comprehensively forbid double trailing commas.  However, this didn't work out too well: [see this gist and the giant FIXME in it](https://gist.github.com/ExpHP/6fc40e82f3d73267c4e590a9a94966f1#file-compile-fail_macro-comma-support-rs-L33-L50)
* I did not touch `select!`. It appears to me to be a complete mess, and its trailing comma mishaps are only the tip of the iceberg.
* There are [some compile-fail test cases](5fa97c35da/src/test/compile-fail/macro-comma-behavior.rs (L49-L52)) that didn't seem to work (rustc emits errors, but compile-fail doesn't acknowledge them), so they are disabled. Any clues? (Possibly related: These happen to be precisely the set of errors which are tagged by rustc as "this error originates in a macro outside of the current crate".)

---

Fixes #48042
Closes #46241
2018-02-28 07:10:05 +00:00
Alexander Ronald Altman
db6a5ee1aa Minor grammatical/style fix in docs. 2018-02-28 00:04:05 -06:00
Mazdak Farrokhzad
f8ebb3f09f fix wording on panics in binary operators on RefCells" 2018-02-27 15:48:50 +01:00
Björn Steinbrink
f05d9679d7 Backport LLVM fixes for a JumpThreading / assume intrinsic bug 2018-02-27 14:20:13 +01:00
Phlosioneer
b7b3498ce8 Fix doctest failure
Tried to be fancy with print statements.
2018-02-26 19:48:15 -05:00
Christian Poveda
9091584def some grammar corrections 2018-02-26 11:14:40 -05:00
Phlosioneer
e8904f935a Change the example string to something arbitrary
The choice of string is arbitrary, so all references to a number
in the string were removed. The string is now the standard "Hello
world!".
2018-02-25 15:46:17 -05:00
Christian Poveda
397ce8a1ae fixed links 2018-02-25 09:39:21 -05:00
kennytm
0652af21b5
Rollup merge of #48235 - varkor:parse-float-lonely-exponent, r=alexcrichton
Make ".e0" not parse as 0.0

This forces floats to have either a digit before the separating point, or after. Thus `".e0"` is invalid like `"."`, when using `parse()`. Fixes #40654. As mentioned in the issue, this is technically a breaking change... but clearly incorrect behaviour at present.
2018-02-25 21:36:46 +08:00
kennytm
268b6d6189
Rollup merge of #48529 - remexre:docs/fix/unicode-0021, r=kennytm
Fixes docs for ASCII functions to no longer claim U+0021 is '@'.

Looks like a typo that got copy-pasted without anyone checking on it.
2018-02-25 21:30:53 +08:00
kennytm
562626ac3f
Rollup merge of #48115 - Centril:feature/iterator_flatten, r=alexcrichton
Add Iterator::flatten

This adds the trait method `.flatten()` on `Iterator` which flattens one level of nesting from an iterator or (into)iterators. The method `.flat_fmap(f)` is then redefined as `.map(f).flatten()`. The implementation of `Flatten` is essentially that of what it was for `FlatMap` but removing the call to `f` at various places.

Hopefully the type alias approach should be OK as was indicated / alluded to by @bluss and @eddyb in https://github.com/rust-lang/rfcs/pull/2306#issuecomment-361391370.

cc @scottmcm
2018-02-25 15:54:41 +08:00
Nathan Ringo
64236092e5
Fixes docs for ASCII functions to no longer claim U+0021 is '@'. 2018-02-24 23:48:51 -06:00
Christian Poveda
7ded7f764c corrected grammar errors 2018-02-24 18:06:01 -05:00