Commit graph

9353 commits

Author SHA1 Message Date
bors
00acb7b243 Auto merge of #60364 - JohnTitor:stabilize-const-needs-drop, r=oli-obk
const-stabilize: std::mem::needs_drop

Closes #51929

r? @oli-obk
2019-04-29 09:48:11 +00:00
Yuki OKUSHI
1c17489bfe const-stabilize std::mem::needs_drop 2019-04-29 12:41:06 +09:00
Mazdak Farrokhzad
b71f8d4e1b Stabilize Iterator::copied in 1.36.0. 2019-04-27 16:45:30 +02:00
Christopher Serr
cf9d6672b7 Remove feature gates from std and tests 2019-04-26 12:33:42 +02:00
Christopher Serr
3b1f1a6446
Stabilize pointer::align_offset
Closes #44488
2019-04-26 12:15:12 +02:00
bors
e8310a7714 Auto merge of #60167 - varkor:tidy-filelength, r=matthewjasper
Add a tidy check for files with over 3,000 lines

Files with a large number of lines can cause issues in GitHub (e.g. https://github.com/rust-lang/rust/issues/60015) and also tend to be indicative of opportunities to refactor into less monolithic structures.

This adds a new check to tidy to warn against files that have more than 3,000 lines, as suggested in https://github.com/rust-lang/rust/issues/60015#issuecomment-483868594. (This number was chosen fairly arbitrarily as a reasonable indicator of size.) This check can be ignored with `// ignore-tidy-filelength`.

Existing files with greater than 3,000 lines currently ignore the check, but this helps us spot when files are getting too large. (We might try to split up all files larger than this in the future, as in https://github.com/rust-lang/rust/issues/60015).
2019-04-26 04:42:10 +00:00
Mazdak Farrokhzad
8bdb91d9ff
Rollup merge of #60165 - Nemo157:pin-into-inner, r=cramertj
Add Pin::{into_inner,into_inner_unchecked}

These functions are useful for unsafe code that needs to temporarily pull smart pointers out of the `Pin`, e.g. [the change that inspired them](b4361780fa (diff-1a4e0ba4d1b539412ca576411ec6c7c2R258)) is taking a `Pin<Box<dyn Future>>`, turning it into a `*mut dyn Future` via `Box::into_raw(unsafe { Pin::into_inner_unchecked(pin) })` then later dropping this via `drop(Pin::from(Box::from_raw(ptr)))`. This can be accomplished today via `{ let ptr = unsafe { Pin::get_unchecked_mut(pin.as_mut()) } as *mut dyn Future; mem::forget(pin); ptr }`, but this is far more complicated and loses out on the symmetry of using `Box::into_raw` and `Box::from_raw`.

I'll extend the documentation on what guarantees `into_inner_unchecked` needs to uphold once I get some feedback on whether this API is wanted or not.

r? @withoutboats
2019-04-26 03:50:16 +02:00
varkor
aa388f1d11 ignore-tidy-filelength on all files with greater than 3000 lines 2019-04-25 21:39:09 +01:00
bors
c32171bd5e Auto merge of #60192 - t-rapp:tr-saturating-funcs, r=alexcrichton
Implement saturating_abs() and saturating_neg() functions for signed integer types

Similar to wrapping_abs() / wrapping_neg() functions but saturating at the numeric bounds instead of wrapping around. Complements the existing set of functions with saturation mechanics.

cc #59983
2019-04-25 17:26:20 +00:00
Tobias Rapp
c7d47c8cf4 Add tests for saturating_abs() and saturating_neg functions 2019-04-25 17:04:17 +02:00
Tobias Rapp
8234ac32bd Add saturating_abs() and saturating_neg() functions to signed integer types
Similar to wrapping_abs() / wrapping_neg() functions but saturating at
the numeric bounds instead of wrapping around. Complements the existing
set of functions with saturation mechanics.
2019-04-25 17:04:11 +02:00
Wim Looman
a0e0849a3b Add Pin::{into_inner,into_inner_unchecked} 2019-04-24 21:19:41 +02:00
Taylor Cramer
3f966dcd53 Stabilize futures_api 2019-04-23 16:13:53 -07:00
Mazdak Farrokhzad
2deae591a0
Rollup merge of #59839 - KodrAus:must-use-num, r=sfackler
Warn on unused results for operation methods on nums

From a suggestion by @llogiq

Adds a `#[must_use]` attribute to operation methods on integers that take self by value as the first operand and another value as the second. It makes it clear that these methods return the result of the operation instead of mutating `self`, which is the source of a rather embarrassing bug I had in a codebase of mine recently...

As an example:

```rust
struct Int {
   value: i64,
}

impl Int {
    fn add(&mut self, other: i64) {
        self.value.wrapping_add(other);
    }
}
```

Will produce a warning like:

```
warning: unused return value of `core::num::<impl i64>::wrapping_add` that must be used
 --> src/main.rs:7:7
  |
7 |       self.value.wrapping_add(other);
  |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: #[warn(unused_must_use)] on by default
  = note: this returns the result of the operation, without modifying the original
```

If this is something we're on board with, we could do something similar for `f32` and `f64` too. There are probably other methods on integers that make sense.
2019-04-23 21:50:54 +02:00
varkor
7f0f0e31ec Remove double trailing newlines 2019-04-22 16:57:01 +01:00
bors
a850a42649 Auto merge of #60133 - phansch:deny_rust_2018_idioms, r=Centril
Deny rust_2018_idioms globally

cc https://github.com/rust-lang/rust/issues/58099#issuecomment-484921194
2019-04-22 07:28:20 +00:00
Philipp Hansch
c9ae68812f
Deny rust_2018_idioms in libcore tests 2019-04-20 18:44:29 +02:00
Jim Blandy
f8f02debbb core::future::Future: Fix markup typo in docs. 2019-04-19 19:25:40 -07:00
Jim Blandy
d0b84e9a8b Doc fixes for core::future::Future.
Fixed outdated reference to `waker` argument; now futures are passed a
`Context`, from which one can obtain a `waker`.

Cleaned up explanation of what happens when you call `poll` on a completed
future. It doesn't make sense to say that `poll` implementations can't cause
memory unsafety; no safe function is ever allowed to cause memory unsafety, so
why mention it here? It seems like the intent is to say that the `Future` trait
doesn't say what the consequences of excess polls will be, and they might be
bad; but that the usual constraints that Rust imposes on any non-`unsafe`
function still apply. It's also oddly specific to say 'memory corruption'
instead of just 'undefined behavior'; UB is a bit jargony, so the text should
provide examples.
2019-04-19 19:10:24 -07:00
Mazdak Farrokhzad
3ad9fcccbb
Rollup merge of #60098 - Centril:libcore-deny-more, r=varkor
libcore: deny `elided_lifetimes_in_paths`

r? @varkor
2019-04-19 06:03:30 +02:00
Mazdak Farrokhzad
af6d3f8fc3
Rollup merge of #60080 - nathankleyn:fix-issue-60068, r=Centril
Fix small errors in docs for `rchunks_exact` and `rchunks_exact_mut`.

The documentation for `rchunks_exact` said it started at the beginning
of the slice, bit it actually starts at the end of the slice.

In addition, there were a couple of "of the slice of the slice"
duplicate phrases going on for `rchunks_exact` and `rchunks_exact_mut`.

This fixes #60068.
2019-04-19 06:03:26 +02:00
Mazdak Farrokhzad
291e44b381
Rollup merge of #60023 - koalatux:nth-back, r=scottmcm
implement specialized nth_back() for Bytes, Fuse and Enumerate

Hi,

After my first PR has been successfully merged, here is my second pull request :-)

Also this PR contains some specializations for the problem discussed in #54054.
2019-04-19 06:03:12 +02:00
Mazdak Farrokhzad
dbfbadeac4 libcore: deny more... 2019-04-19 01:37:12 +02:00
Nathan Kleyn
d98afc51dc
Fix small errors in docs for rchunks_exact and rchunks_exact_mut.
The documentation for `rchunks_exact` said it started at the beginning
of the slice, bit it actually starts at the end of the slice.

In addition, there were a couple of "of the slice of the slice"
duplicate phrases going on for `rchunks_exact` and `rchunks_exact_mut`.

This fixes #60068.
2019-04-18 14:48:15 +01:00
Taiki Endo
360432f1e8 libcore => 2018 2019-04-18 14:47:35 +09:00
bors
8260e96760 Auto merge of #60013 - NieDzejkob:fix-16bit-usize, r=sanxiyn
Fix the max value of usize on 16-bit platforms
2019-04-17 16:23:25 +00:00
Mazdak Farrokhzad
eb958e1b2e
Rollup merge of #60018 - RalfJung:miri-test-libstd, r=oli-obk
Miri now supports entropy, but is still slow

Adjust the `cfg` and their comments in the test suites accordingly.
2019-04-17 10:31:37 +02:00
Ralf Jung
d55e4b7a25 test sort_unstable in Miri 2019-04-17 09:47:36 +02:00
Adrian Friedli
2605537012
implement nth_back for Enumerate 2019-04-16 23:45:59 +02:00
Adrian Friedli
fae2a68ba2
implement nth_back for Fuse 2019-04-16 21:40:50 +02:00
Adrian Friedli
cc2689a253
implement nth_back for Bytes 2019-04-16 20:41:23 +02:00
Ralf Jung
9b21324db2 Miri now supports entropy, but is still slow 2019-04-16 20:04:17 +02:00
Jakub Kądziołka
d9c42d5c84
Fix the max value of usize on 16-bit platforms 2019-04-16 18:55:58 +02:00
Mazdak Farrokhzad
d9422f00a0
Rollup merge of #59717 - Reconcyl:master, r=steveklabnik
improve docs for std::hint::unreachable_unchecked()

Fixes #59549
2019-04-16 05:14:17 +02:00
Mazdak Farrokhzad
c712d38634
Rollup merge of #59955 - RalfJung:stdsimd, r=alexcrichton
bump stdsimd; make intra_doc_link_resolution_failure an error again; make lints more consistent

I made `intra_doc_link_resolution_failure` warn so that it would properly respect `deny-warnings = false` in `config.toml`.  `#[warn]` still become errors with `-D warnings` so I thought this was fine.

Turns out however that we don't pass `-D warnings` when running rustdoc, so for additional rustdoc-lints we need to set them to `deny`.

Also sue the opportunity to make the lint flags more consistent between libcore, liballoc, libstd.

Cc @gnzlbg for the *big* stdsimd update.
2019-04-15 18:23:45 +02:00
Mazdak Farrokhzad
92702c1cff
Rollup merge of #59648 - alex:must-use-result, r=alexcrichton
Add must_use annotations to Result::is_ok and is_err

Discussed in #59610
2019-04-15 18:23:39 +02:00
Stepan Koltsov
fd4ac0e26c Hasher: replace unsafe trasmute with to_ne_bytes
Spead the knowledge of `to_ne_bytes` functions existence.
2019-04-15 00:33:10 +01:00
Mazdak Farrokhzad
fd4a3362ca
Rollup merge of #59900 - czipperz:remove-bracket-mut-syntax-in-pin-docs, r=RalfJung
Remove [mut] syntax in pin docs

Resolves #59832
2019-04-14 17:49:23 +02:00
Ralf Jung
cdf1d368e2 bump stdsimd; make intra_doc_link_resolution_failure an error again 2019-04-14 10:00:22 +02:00
Mazdak Farrokhzad
2413ac7956
Rollup merge of #59925 - solson:split_ascii_whitespace-docfix, r=Centril
Fix paste error in split_ascii_whitespace docs.

It was accidentally still testing the unicode version, `split_whitespace`.
2019-04-14 00:23:49 +02:00
Mazdak Farrokhzad
8769297e97
Rollup merge of #59912 - RalfJung:maybe-uninit, r=Centril
MaybeUninit: remove deprecated functions
2019-04-14 00:23:47 +02:00
Chris Gregory
b754b8fb8e Expand note on mutable references 2019-04-13 15:54:57 -05:00
Scott Olson
b27bcc0a17 Fix paste error in split_ascii_whitespace docs. 2019-04-12 13:57:45 -06:00
bors
df25d79a33 Auto merge of #59733 - cramertj:wake-by-ref, r=withoutboats
Final (one can only hope) futures_api adjustments

Based on https://github.com/rust-lang/rust/pull/59119 -- this change is only the latter two commits.
cc https://github.com/rust-lang/rust/issues/59725

r? @withoutboats
2019-04-12 17:24:01 +00:00
Ralf Jung
1ce6645d1f MaybeUninit: remove deprecated functions 2019-04-12 12:41:17 +02:00
Mazdak Farrokhzad
257dbb826d
Rollup merge of #59880 - solson:transmute-float, r=alexcrichton
Remove note about transmute for float bitpatterns.

This particular usecase has been safely abstracted in these `std` functions: [f32::to_bits](https://doc.rust-lang.org/std/primitive.f32.html#method.to_bits), [f32::from_bits](https://doc.rust-lang.org/std/primitive.f32.html#method.from_bits), [f64::to_bits](https://doc.rust-lang.org/std/primitive.f64.html#method.to_bits), [f64::from_bits](https://doc.rust-lang.org/std/primitive.f64.html#method.from_bits). So, I think we shouldn't recommend an unnecessary use of `unsafe` here anymore.
2019-04-12 12:18:05 +02:00
Mazdak Farrokhzad
740c9ea703
Rollup merge of #59836 - andersk:nominator, r=Centril
std::ops::Div examples: correct nominator to numerator
2019-04-12 12:17:59 +02:00
Mazdak Farrokhzad
94b7b6a604
Rollup merge of #59831 - ehuss:ordering-docs, r=kennytm
Remove strange formatting in `Ordering` docs.

I can't really fathom what the intent of the brackets is. The [original PR](#12956) doesn't give any hints. I think it seems fine without them.
2019-04-12 12:17:58 +02:00
Chris Gregory
e9c9d1c305 Add comment that field projectin also works with mutable fields 2019-04-12 01:29:30 -05:00
Chris Gregory
94a5c3b2b2 Remove [mut] syntax in pin docs 2019-04-11 21:21:19 -05:00