Commit graph

9798 commits

Author SHA1 Message Date
Mazdak Farrokhzad
d72cb093f4
Rollup merge of #63298 - RalfJung:assume_init, r=Mark-Simulacrum,Centril
assume_init: warn about valid != safe

We have this warning in the type-level docs, but it seems worth repeating it on the function.
2019-08-06 15:36:35 +02:00
Mazdak Farrokhzad
c32735d03c
Rollup merge of #62459 - timvermeulen:result_sum_internal_iteration, r=scottmcm
Use internal iteration in the Sum and Product impls of Result and Option

This PR adds internal iteration to the `ResultShunt` iterator type underlying the `Sum` and `Product` impls of `Result`. I had to change `ResultShunt` to hold a mutable reference to an error instead, similar to `itertools::ProcessResults`, in order to be able to pass the `ResultShunt` itself by value (which is necessary for internal iteration).

`ResultShunt::process` can unfortunately no longer be an associated function because that would make it generic over the lifetime of the error reference, which wouldn't work, so I turned it into the free function `process_results`.

I removed the `OptionShunt` type and forwarded the `Sum` and `Product` impls of `Option` to their respective impls of `Result` instead, to avoid having to repeat the internal iteration logic.
2019-08-06 15:36:27 +02:00
Ralf Jung
1821414b7b clarify 2019-08-06 10:41:48 +02:00
Ralf Jung
1b9eb4ac4c be clear that 1-init Vec being valid (but not safe) is not a stable guarantee 2019-08-06 09:47:42 +02:00
Mazdak Farrokhzad
d7b49a8a85
Rollup merge of #63295 - RalfJung:align_offset, r=dtolnay
improve align_offset docs

Cc @shepmaster
2019-08-06 08:17:48 +02:00
Mazdak Farrokhzad
000d646424
Rollup merge of #63293 - shepmaster:align-to-doc, r=RalfJung
Clarify align_to's requirements and obligations

Based on discussions with @RalfJung around my misunderstandings when using this.

r? @RalfJung
2019-08-06 08:17:47 +02:00
Mazdak Farrokhzad
046936aeaf
Rollup merge of #63260 - RalfJung:ptr-test, r=matklad
fix UB in a test

We used to compare two mutable references that were supposed to point to the same thing. That's no good.

Compare them as raw pointers instead.
2019-08-06 08:17:39 +02:00
Mazdak Farrokhzad
fe998dbfe4
Rollup merge of #61457 - timvermeulen:double_ended_iters, r=scottmcm
Implement DoubleEndedIterator for iter::{StepBy, Peekable, Take}

Now that `DoubleEndedIterator::nth_back` has landed, `StepBy` and `Take` can have an efficient `DoubleEndedIterator` implementation. I don't know if there was any particular reason for `Peekable` not having a `DoubleEndedIterator` implementation, but it's quite trivial and I don't see any drawbacks to having it.

I'm not very happy about the implementation of `Peekable::try_rfold`, but I didn't see another way to only take the value out of `self.peeked` in case `self.iter.try_rfold` didn't exit early.

I only added `Peekable::rfold` (in addition to `try_rfold`) because its `Iterator` implementation has both `fold` and `try_fold` (and for similar reasons I added `Take::try_rfold` but not `Take::rfold`). Do we have any guidelines on whether we want both? If we do want both, maybe we should investigate which iterator adaptors override `try_fold` but not `fold` and add the missing implementations. At the moment I think that it's better to always have iterator adaptors implement both, because some iterators have a simpler `fold` implementation than their `try_fold` implementation.

The tests that I added may not be sufficient because they're all just existing tests where `next`/`nth`/`fold`/`try_fold` are replaced by their DEI counterparts, but I do think all paths are covered. Is there anything in particular that I should probably also test?
2019-08-06 08:17:31 +02:00
Jake Goulding
571e22d7e8 Clarify align_to's requirements and obligations 2019-08-05 19:44:07 -04:00
Ralf Jung
e1875742d0 assume_init: warn about valid != safe 2019-08-05 20:13:59 +02:00
Ralf Jung
1f018636e3 improve align_offset docs 2019-08-05 18:38:10 +02:00
Ralf Jung
90b95cf53f
fix slice comparison
Co-Authored-By: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-08-05 15:30:08 +02:00
Ralf Jung
4e51ef7ccd
Test content, not value
Co-Authored-By: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-08-05 11:21:15 +02:00
Ralf Jung
0d1584507b fix UB in a test 2019-08-04 14:43:02 +02:00
Ralf Jung
9b5623f8bc fix links
relative links do not work because this is included in several places
2019-08-04 09:52:36 +02:00
Ralf Jung
3b9cda4693
Apply suggestions from code review
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-08-03 13:45:15 +02:00
Ralf Jung
f44abba4ec clarify that unchecked indexing is UB even if the reference is never used 2019-08-03 12:46:20 +02:00
Mazdak Farrokhzad
4520a39b94
Rollup merge of #63215 - gnzlbg:patch-6, r=Centril
Clarify semantics of mem::zeroed

Clarifies the semantics of `mem::zeroed`.

r? @Centril

cc @RalfJung
2019-08-03 00:09:14 +02:00
gnzlbg
3725e3542f
Consistency. 2019-08-02 15:07:19 +02:00
gnzlbg
13b4afe4ba
Remove trailing whitespace
I had one job...
2019-08-02 14:12:12 +02:00
gnzlbg
57f94237e1
Clarify semantics of mem::zeroed 2019-08-02 13:39:07 +02:00
Mazdak Farrokhzad
dbfe12daed
Rollup merge of #63189 - waywardmonkeys:doc-improvements, r=Centril
Doc improvements

Miscellaneous documentation fixes.
2019-08-02 12:14:18 +02:00
Mazdak Farrokhzad
6b951c2950
Rollup merge of #62663 - llogiq:more-questionmark-docs, r=GuillaumeGomez
More questionmarks in doctests

This removes the other `unwrap`s in the macro doctests, replacing them with `?`. For now, we need to specify the main function including the return type, we can get rid of that once the return type suggestion for `fn main() { .. }` works correctly.

r? @QuietMisdreavus
2019-08-02 12:14:14 +02:00
Bruce Mitchener
325c6a56c2 Futures: Add link to Waker in trait doc. 2019-08-02 01:39:25 +07:00
Bruce Mitchener
86633b6389 Fix typos in doc comments. 2019-08-02 01:36:36 +07:00
Andre Bogus
cbac7815fe More questionmarks in doctests 2019-08-01 17:27:57 +02:00
Bruce Mitchener
b5c04e6d9e FixedSizeArray: Add missing links in doc comments. 2019-08-01 20:24:05 +07:00
Vadim Petrochenkov
73dae4eaf9 Remove derives Encodable/Decodable and unstabilize attribute #[bench] 2019-07-31 21:27:59 +03:00
Mazdak Farrokhzad
c088890b6e
Rollup merge of #63123 - TankhouseAle:const-fn-type-name-any, r=oli-obk
`const fn`-ify `std::any::type_name` as laid out in #63084

A test, based on the one I added when I implemented support for the underlying `core::intrinsics::type_name` being allowed in `const fn` contexts, is included.
2019-07-30 22:43:37 +02:00
Mazdak Farrokhzad
8a90173239 Allow 'incomplete_features' in libcore/alloc. 2019-07-30 10:32:43 +02:00
Mazdak Farrokhzad
a03caecc53
Rollup merge of #63108 - lzutao:option-xor-typo, r=jonas-schievink
Add links to None in Option doc

r? @jonas-schievink
2019-07-30 05:37:43 +02:00
Mazdak Farrokhzad
51e50ed827
Rollup merge of #63000 - max-sixty:chars-display, r=alexcrichton
Impl Debug for Chars

Closes https://github.com/rust-lang/rust/issues/62947, making `Debug` more consistent with the struct's output and purpose

Let me know any feedback!
2019-07-30 05:37:33 +02:00
Mazdak Farrokhzad
b5bea2565e
Rollup merge of #61965 - phil-opp:patch-4, r=scottmcm
Remove mentions of removed `offset_to` method from `align_offset` docs

The `offset_to` method was deleted in https://github.com/rust-lang/rust/pull/52814.

The replacement for the removed method is `wrapping_offset_from`. However, neither method takes an `usize` as argument, so I don't think that it makes sense to mention them.
2019-07-30 05:37:30 +02:00
TankhouseAle
4a3d41d334
Add the necessary changes to any.rs
Specifically the `#[rustc_const_unstable(feature = "const_type_name")]` attribute, as well as marking the actual function as `const`.
2019-07-29 23:02:29 -04:00
Maximilian Roos
3325ff6df4
comments from @lzutao 2019-07-29 12:26:59 -04:00
Maximilian Roos
624c5da1aa
impl Debug for Chars 2019-07-29 12:17:59 -04:00
Lzu Tao
c56d8a81e2 Add links to None in Option doc 2019-07-29 15:56:40 +00:00
Tim Vermeulen
2e41ba8742 Use internal iteration in the Sum and Product impls of Result and Option 2019-07-29 02:40:50 +02:00
bors
c7312fe4ff Auto merge of #63090 - Centril:rollup-xnjwm2h, r=Centril
Rollup of 8 pull requests

Successful merges:

 - #61856 (Lint attributes on function arguments)
 - #62360 (Document that ManuallyDrop::drop should not called more than once)
 - #62392 (Update minifier-rs version)
 - #62871 (Explicit error message for async recursion.)
 - #62995 (Avoid ICE when suggestion span is at Eof)
 - #63053 (SystemTime docs: recommend Instant for elapsed time)
 - #63081 (tidy: Cleanup the directory whitelist)
 - #63088 (Remove anonymous_parameters from unrelated test)

Failed merges:

r? @ghost
2019-07-28 20:22:42 +00:00
Mazdak Farrokhzad
fbfd542277
Rollup merge of #62360 - Aaron1011:patch-2, r=RalfJung
Document that ManuallyDrop::drop should not called more than once

Double dropping is unsound (e.g. https://github.com/rust-lang/rust/issues/60977). This commit documents the fact that `ManuallyDrop::drop` should not be called multiple times on the same instance, as it might not be immediately obvious that this counts as a use of uninitialized data.
2019-07-28 21:19:52 +02:00
Vadim Petrochenkov
1a370109ec Fix cfg(parallel_compiler) mode
Fix rebase
2019-07-28 18:47:03 +03:00
Vadim Petrochenkov
676d282dd3 Deny unused_lifetimes through rustbuild 2019-07-28 18:47:02 +03:00
Vadim Petrochenkov
434152157f Remove lint annotations in specific crates that are already enforced by rustbuild
Remove some random unnecessary lint `allow`s
2019-07-28 18:46:24 +03:00
Mazdak Farrokhzad
b405aa2d03
Rollup merge of #62806 - mati865:clippy, r=TimNN
Fix few Clippy warnings
2019-07-28 11:11:08 +02:00
Mazdak Farrokhzad
8f9b8c19de
Rollup merge of #62883 - Stargateur:refactoring-adapters, r=scottmcm
Refactoring use common code between option, result and accum

`Option` and `Result` have almost exactly the same code that in `accum.rs` that implement `Sum` and `Product`. This PR just move some code to use the same code for all of them. I believe is better to not implement this `Iterator` feature twice.

I'm not very familiar with pub visibility hope I didn't make then public. However, maybe these adapters could be useful and we could think to make then pub.

#59605
#11084

r? @pnkfelix
2019-07-28 03:01:48 +02:00
Mazdak Farrokhzad
cb8b491a65
Rollup merge of #62074 - wizAmit:feature/mut_chunks_nth_back, r=scottmcm
squash of all commits for nth_back on ChunksMut

wip nth_back for chunks_mut

working chunksmut

fixed nth_back for chunksmut

Signed-off-by: wizAmit <amitforfriends_dns@yahoo.com>

r? @timvermeulen
r? @scottmcm
2019-07-28 03:01:44 +02:00
Aaron Hill
a93f4abe24
Update wording 2019-07-27 18:42:47 -04:00
Vadim Petrochenkov
42a317a1cd Remove run-pass test suites 2019-07-27 18:56:17 +03:00
bors
0e9b465d72 Auto merge of #62748 - luca-barbieri:optimize-refcell-borrow, r=RalfJung
Optimize RefCell read borrowing

Instead of doing two comparisons we can do only one with a bit of cleverness.

LLVM currently can't do this optimization itself on x86-64.
2019-07-27 09:32:44 +00:00
Stargateur
3334802c83 Refactoring use commun code between option, result and accum 2019-07-27 02:17:56 +02:00