Commit Graph

944 Commits

Author SHA1 Message Date
Joshua Nelson 7b823df489 Link to #capacity-and-reallocation when using with_capacity 2020-09-03 18:08:25 -04:00
The8472 2f23a0fcca fix debug assertion
The InPlaceIterable debug assert checks that the write pointer
did not advance beyond the read pointer. But TrustedRandomAccess
never advances the read pointer, thus triggering the assert.
Skip the assert if the source pointer did not change during iteration.
2020-09-03 22:15:47 +02:00
The8472 8e5fe5569b improve comments and naming 2020-09-03 20:59:37 +02:00
The8472 6464586542 add explanation to specialization marker 2020-09-03 20:59:36 +02:00
The8472 acdd441cc3 remove separate no-drop code path since it resulted in more LLVM IR 2020-09-03 20:59:36 +02:00
The8472 435219dd82 remove empty Vec extend optimization
The optimization meant that every extend code path had to emit llvm
IR for from_iter and extend spec_extend, which likely impacts
compile times while only improving a few edge-cases
2020-09-03 20:59:35 +02:00
The8472 9aeea00222 get things to work under min_specialization by leaning more heavily on #[rustc_unsafe_specialization_marker] 2020-09-03 20:59:34 +02:00
The8472 bec9f9223c apply required min_specialization attributes 2020-09-03 20:59:32 +02:00
The8472 5530858a08 generalize in-place collect to types of same size and alignment 2020-09-03 20:59:31 +02:00
The8472 fa34b39cd6 increase comment verbosity 2020-09-03 20:59:30 +02:00
The8472 872ab780c0 work around compiler overhead around lambdas in generics by extracting them into free functions 2020-09-03 20:59:29 +02:00
The8472 771b8ecc83 extract IntoIter drop/forget used by specialization into separate methods 2020-09-03 20:59:29 +02:00
The8472 a7a8b52e91 remove redundant cast 2020-09-03 20:59:28 +02:00
The8472 fe350dd82d move unsafety into method, not relevant to caller 2020-09-03 20:59:27 +02:00
The8472 0d2d033415 replace unsafe ptr::write with deref-write, benchmarks show no difference 2020-09-03 20:59:26 +02:00
The8472 9596e5a2f2 pacify tidy 2020-09-03 20:59:26 +02:00
The8472 6ed05fd995 replace drop flag with ManuallyDrop 2020-09-03 20:59:25 +02:00
The8472 ab382b7661 mark as_inner as unsafe and update comments 2020-09-03 20:59:24 +02:00
The8472 2a51e579f5 avoid exposing that binary heap's IntoIter is backed by vec::IntoIter, use a private trait instead 2020-09-03 20:59:24 +02:00
The8472 0856771248 fix build issue due to stabilized feature 2020-09-03 20:59:23 +02:00
The8472 e85cfa4f22 impl TrustedRandomAccess for vec::IntoIter 2020-09-03 20:59:22 +02:00
The8472 fbb3371e5b remove unecessary feature flag
# Conflicts:
#	library/alloc/src/lib.rs
2020-09-03 20:59:21 +02:00
The8472 085eb20a61 move free-standing method into trait impl 2020-09-03 20:59:19 +02:00
The8472 00a32eb54f fix some in-place-collect edge-cases
- it's an allocation optimization, so don't attempt to do it on ZSTs
- drop the tail of partially exhausted iters
2020-09-03 20:59:17 +02:00
The8472 8c816b96dd remove redundant code 2020-09-03 20:59:16 +02:00
The8472 cc67c8eb91 improve comments 2020-09-03 20:59:16 +02:00
The8472 290fe895ba specialize creating a Vec from a slice iterator where T: Copy
this was already implemented for Extend but not for FromIterator
2020-09-03 20:59:15 +02:00
The8472 dac0edfaaa restore SpecFrom<T, TrustedLen<Item=T>> specialization by nesting
specializations
2020-09-03 20:59:15 +02:00
The8472 582fbb1d62 use From specializations on extend if extended Vec is empty
this enables in-place iteration and allocation reuse in additional cases
2020-09-03 20:59:14 +02:00
The8472 a4e385a0d0 use memmove instead of generic in-place iteration for IntoIter source
this is the original SpecExtend<_, IntoIter> logic except generalizing
the fast-path to include a memmove
2020-09-03 20:59:11 +02:00
The8472 631543dcb4 restore Vec::extend specialization for vec::IntoIter sources that
was lost during refactoring
2020-09-03 20:59:11 +02:00
The8472 07a8c1b95a hide binary_heap::IntoIter internals behind impl Trait 2020-09-03 20:59:10 +02:00
The8472 232065074d recover vectorization
switch to try_fold and segregate the drop handling to keep
collect::<Vec<u8>>() and similar optimizer-friendly

It comes at the cost of less accurate debug_asserts and code complexity
2020-09-03 20:59:09 +02:00
The8472 bead910b21 simplify pointer arithmetic 2020-09-03 20:59:08 +02:00
The8472 328a75f766 use add instead of offset 2020-09-03 20:59:07 +02:00
The8472 88b7ae642c implement drop handling 2020-09-03 20:59:06 +02:00
The8472 73a982e9ec assert that SourceIter requirements have not been violated by the pipeline 2020-09-03 20:59:06 +02:00
The8472 2a327394e4 mark SourceIter as unsafe, document invariants 2020-09-03 20:59:05 +02:00
The8472 bb2d533bb9 in-place collect for Vec. Box<[]> and BinaryHeap IntoIter and some adapters 2020-09-03 20:59:03 +02:00
The8472 076417e978 unrelated typo fix 2020-09-03 20:56:34 +02:00
Ivan Tham 4df64905ea Link & primitive using relative link 2020-09-03 23:02:27 +08:00
bors 08deb863bd Auto merge of #76235 - jyn514:std-intra-links, r=poliorcetics
Convert many files to intra-doc links

Helps with https://github.com/rust-lang/rust/issues/75080
r? @poliorcetics
I recommend reviewing one commit at a time, but the diff is small enough you can do it all at once if you like :)
2020-09-03 05:53:48 +00:00
Joshua Nelson 44bacc3ffa Revert change to MaybeUninit until rustdoc bugs are fixed
https://github.com/rust-lang/rust/issues/76106
2020-09-02 17:38:21 -04:00
Joshua Nelson 59a1a05bff Convert many files to intra-doc links
- Use intra-doc links for `std::io` in `std::fs`
- Use intra-doc links for File::read in unix/ext/fs.rs
- Remove explicit intra-doc links for `true` in `net/addr.rs`
- Use intra-doc links in alloc/src/sync.rs
- Use intra-doc links in src/ascii.rs
- Switch to intra-doc links in alloc/rc.rs
- Use intra-doc links in core/pin.rs
- Use intra-doc links in std/prelude
- Use shorter links in `std/fs.rs`

  `io` is already in scope.
2020-09-02 17:37:40 -04:00
Anton dbe50f5c24 Same typos in vec_deque 2020-09-02 14:09:42 +02:00
Anton b67006422e Fix typos in vec try_reserve(_exact) docs
`try_reserve` and `try_reserve_exact` docs refer to calling `reserve` and `reserve_exact`.
`try_reserve_exact` example uses `try_reserve` method instead of `try_reserve_exact`.
2020-09-02 13:12:44 +02:00
Joshua Nelson 726b187546 Use intra-doc links for MaybeUninit in boxed.rs 2020-09-01 23:54:17 -04:00
Jon Gjengset 8b55360f70 Will land in 1.48, not 1.47 2020-09-01 09:50:32 -04:00
Jon Gjengset 010891f8b8 Merge branch 'master' into stabilize-vecdeque-make_contiguous 2020-09-01 09:49:42 -04:00
mental 0f301e8bb4 Removed [inline] and copied over comments from Arc::new_cyclic 2020-09-01 09:46:48 +01:00