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
e85cfa4f22
impl TrustedRandomAccess for vec::IntoIter
2020-09-03 20:59:22 +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
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
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
Aleksey Kladov
13c4f04561
Rollup merge of #76069 - pickfire:patch-16, r=jyn514
...
Use explicit intra-doc link in path for Vec resize
r? @jyn514
2020-08-31 12:51:53 +02:00
Aleksey Kladov
d829a5bcb1
Rollup merge of #76058 - pickfire:patch-11, r=jyn514
...
Use assertions on Vec doc
Clarify what the state of Vec after with_capacity on doc.
r? @jyn514
2020-08-31 12:51:51 +02:00
Aleksey Kladov
af1f46cf99
Rollup merge of #76055 - pickfire:patch-9, r=jyn514
...
Keep doc standard for Vec DrainFilter
r? @jyn514
2020-08-31 12:51:49 +02:00
Aleksey Kladov
e59eb4e0fa
Rollup merge of #76023 - pickfire:patch-4, r=jyn514
...
Liballoc extend use intra doc link
Superseeds https://github.com/rust-lang/rust/pull/75729/commits
r? @jyn514
2020-08-31 12:51:42 +02:00
Dylan DPC
75d6b109c2
Rollup merge of #75874 - pickfire:patch-3, r=jyn514
...
Shorten liballoc doc intra link while readable
r? @jyn514
Do you want to reviews these sort of pull requests in the future? I might send a few of them while reading vec code.
2020-08-30 01:43:41 +02:00
Ivan Tham
2d1ab83834
Remove empty vec assertion flow distrupt
...
Co-authored-by: Joshua Nelson <joshua@yottadb.com >
2020-08-29 23:07:40 +08:00
Ivan Tham
be8b5eb529
Reuse description from drain_filter
...
Co-authored-by: Joshua Nelson <joshua@yottadb.com >
2020-08-29 22:39:34 +08:00
Ivan Tham
237c5005d6
Use explicit intra-doc link in path for Vec resize
2020-08-29 20:40:05 +08:00
Ivan Tham
12b4cf8c6c
Use assertions on Vec doc
...
Clarify what the state of Vec after with_capacity on doc.
2020-08-29 18:38:18 +08:00
Ivan Tham
d727442f2d
Remove brackets in drain filter docs
2020-08-29 18:23:29 +08:00
Ivan Tham
d504d553f1
Keep doc standard for Vec DrainFilter
2020-08-29 18:21:47 +08:00
Ivan Tham
c7e428e862
Liballoc vec doc use associated function
...
Co-authored-by: Joshua Nelson <joshua@yottadb.com >
2020-08-29 16:13:05 +08:00
Ivan Tham
2d6ab122b7
Liballoc extend use intra doc link
2020-08-28 19:33:53 +08:00