about summary refs log tree commit diff
path: root/library/alloc
AgeCommit message (Collapse)AuthorLines
2022-11-26Add second test case in `make_contiguous_head_to_end`Markus Everling-10/+49
2022-11-26Improve slow path in `make_contiguous`Markus Everling-36/+76
2022-11-26Don't use `Take` in `SpecExtend` implMarkus Everling-21/+23
2022-11-24Tune RepeatWith::try_fold and Take::for_each and Vec::extend_trustedScott McMurray-5/+9
2022-11-25Changes according to code reviewMarkus Everling-144/+181
2022-11-24Stop peeling the last iteration of the loop in `Vec::repeat_with`Scott McMurray-11/+1
2022-11-24Extract the logic for `TrustedLen` to a named method that can be called directlyScott McMurray-32/+37
2022-11-23Add `#![deny(unsafe_op_in_unsafe_fn)]` in liballoc testsThom Chiovoloni-7/+38
2022-11-22Rollup merge of #104647 - RalfJung:alloc-strict-provenance, r=thomccManish Goregaokar-6/+11
enable fuzzy_provenance_casts lint in liballoc and libstd r? ````@thomcc````
2022-11-22add test for issue 104726The 8472-0/+12
2022-11-22Rollup merge of #101655 - dns2utf8:box_docs, r=dtolnayManish Goregaokar-1/+1
Make the Box one-liner more descriptive I would like to avoid a definition that relies on itself. r? `@GuillaumeGomez`
2022-11-21Touch up Box<T> one-linerDavid Tolnay-2/+2
2022-11-20Rollup merge of #104641 - tshepang:grammar, r=Mark-SimulacrumMatthias Krüger-2/+2
replace unusual grammar
2022-11-20Rollup merge of #101310 - zachs18:rc_get_unchecked_mut_docs_soundness, ↵Matthias Krüger-8/+74
r=Mark-Simulacrum Clarify and restrict when `{Arc,Rc}::get_unchecked_mut` is allowed. (Tracking issue for `{Arc,Rc}::get_unchecked_mut`: #63292) (I'm using `Rc` in this comment, but it applies for `Arc` all the same). As currently documented, `Rc::get_unchecked_mut` can lead to unsoundness when multiple `Rc`/`Weak` pointers to the same allocation exist. The current documentation only requires that other `Rc`/`Weak` pointers to the same allocation "must not be dereferenced for the duration of the returned borrow". This can lead to unsoundness in (at least) two ways: variance, and `Rc<str>`/`Rc<[u8]>` aliasing. ([playground link](https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=d7e2d091c389f463d121630ab0a37320)). This PR changes the documentation of `Rc::get_unchecked_mut` to restrict usage to when all `Rc<T>`/`Weak<T>` have the exact same `T` (including lifetimes). I believe this is sufficient to prevent unsoundness, while still allowing `get_unchecked_mut` to be called on an aliased `Rc` as long as the safety contract is upheld by the caller. ## Alternatives * A less strict, but still sound alternative would be to say that the caller must only write values which are valid for all aliased `Rc`/`Weak` inner types. (This was [mentioned](https://github.com/rust-lang/rust/issues/63292#issuecomment-568284090) in the tracking issue). This may be too complicated to clearly express in the documentation. * A more strict alternative would be to say that there must not be any aliased `Rc`/`Weak` pointers, i.e. it is required that get_mut would return `Some(_)`. (This was also mentioned in the tracking issue). There is at least one codebase that this would cause to become unsound ([here](https://github.com/kaimast/lsm-rs/blob/be5a164d770d850d905e510e2966ad4b1cc9aa5e/src/memtable.rs#L166), where additional locking is used to ensure unique access to an aliased `Rc<T>`; I saw this because it was linked on the tracking issue).
2022-11-20Unify stable and unstable sort implementations in same core moduleLukas Bergdoll-309/+39
This moves the stable sort implementation to the core::slice::sort module. By virtue of being in core it can't access `Vec`. The two `Vec` used by merge sort, `buf` and `runs`, are modelled as custom types that implement the very limited required `Vec` interface with the help of provided allocation and free functions. This is done to allow future re-use of functions and logic between stable and unstable sort. Such as `insert_head`.
2022-11-20enable fuzzy_provenance_casts lint in liballocRalf Jung-6/+11
2022-11-20replace unusual grammarTshepang Mbambo-2/+2
2022-11-20Update VecDeque implementationMarkus Everling-1236/+767
2022-11-20Auto merge of #98914 - fee1-dead-contrib:min-deref-patterns, r=compiler-errorsbors-1/+1
Minimal implementation of implicit deref patterns for Strings cc `@compiler-errors` `@BoxyUwU` https://github.com/rust-lang/lang-team/issues/88 #87121 ~~I forgot to add a feature gate, will do so in a minute~~ Done
2022-11-20Rollup merge of #104435 - scottmcm:iter-repeat-n, r=thomccYuki Okushi-2/+16
`VecDeque::resize` should re-use the buffer in the passed-in element Today it always copies it for *every* appended element, but one of those clones is avoidable. This adds `iter::repeat_n` (https://github.com/rust-lang/rust/issues/104434) as the primitive needed to do this. If this PR is acceptable, I'll also use this in `Vec` rather than its custom `ExtendElement` type & infrastructure that is harder to share between multiple different containers: https://github.com/rust-lang/rust/blob/101e1822c3e54e63996c8aaa014d55716f3937eb/library/alloc/src/vec/mod.rs#L2479-L2492
2022-11-20Rollup merge of #104112 - yancyribbens:add-copy-to-repeat-description, ↵Yuki Okushi-1/+1
r=JohnTitor rustdoc: Add copy to the description of repeat Small nit, but it's more clear to say `copy` here instead of defining `repeat` in terms of itself.
2022-11-18Change undefined-behavior doctests from ignore to no_run.Zachary S-4/+4
2022-11-18Apply suggestions from code review zachs18-2/+2
Fix spelling error.
2022-11-18Add examples to show when `{Arc,Rc}::get_mut_unchecked` is disallowed.Zachary S-0/+64
2022-11-18Clarify and restrict when `{Arc,Rc}::get_mut_unchecked` is allowed.Zachary S-8/+10
2022-11-18Remove Vec/Rc storage reuse optclubby789-137/+12
2022-11-18Rm diagnostic item, use lang itemDeadbeef-2/+1
2022-11-17Minimal implementation of implicit deref patternsDeadbeef-0/+1
2022-11-17Auto merge of #104205 - clubby789:grow-rc, r=thomccbors-38/+161
Attempt to reuse `Vec<T>` backing storage for `Rc/Arc<[T]>` If a `Vec<T>` has sufficient capacity to store the inner `RcBox<[T]>`, we can just reuse the existing allocation and shift the elements up, instead of making a new allocation.
2022-11-15generalize str.contains() tests to a range of haystack sizesThe 8472-5/+21
The Big-O is cubic, but this is only called with ~70 chars so it's still fast enough
2022-11-15`VecDeque::resize` should re-use the buffer in the passed-in elementScott McMurray-2/+16
Today it always copies it for *every* appended element, but one of those clones is avoidable.
2022-11-14update str.contains benchmarksThe 8472-3/+54
2022-11-14black_box test strings in str.contains(str) benchmarksThe 8472-4/+4
2022-11-14rustdoc: Add copy to the description of repeatyancy-1/+1
2022-11-14Add `Vec` storage optimization to `Arc` and add testsclubby789-19/+96
2022-11-14Reuse `Vec<T>` backing storage for `Rc<[T]>`clubby789-19/+65
Co-authored-by: joboet <jonas.boettiger@icloud.com>
2022-11-14Auto merge of #103858 - Mark-Simulacrum:bump-bootstrap, r=pietroalbinibors-21/+17
Bump bootstrap compiler to 1.66 This PR: - Bumps version placeholders to release - Bumps to latest beta - cfg-steps code r? `@pietroalbini`
2022-11-08Rollup merge of #104097 - RalfJung:miri-alloc-benches, r=thomccGuillaume Gomez-16/+19
run alloc benchmarks in Miri and fix UB Miri since recently has a "fake monotonic clock" that works even with isolation. Its measurements are not very meaningful but it means we can run these benches and check them for UB. And that's a good thing since there was UB here: fixes https://github.com/rust-lang/rust/issues/104096. r? ``@thomcc``
2022-11-08Rollup merge of #104093 - RalfJung:test-sizes, r=thomccGuillaume Gomez-0/+1
disable btree size tests on Miri Seems fine not to run these in Miri, they can't have UB anyway. And this lets us do layout randomization in Miri. r? ``@thomcc``
2022-11-07fmtRalf Jung-5/+5
2022-11-07Rollup merge of #104090 - wanghaha-dev:master, r=Dylan-DPCDylan DPC-1/+1
Modify comment syntax error Modify comment syntax error
2022-11-07run alloc benchmarks in Miri and fix UBRalf Jung-16/+19
2022-11-07disable btree size tests on MiriRalf Jung-0/+1
2022-11-07Modify comment syntax errorwanghaha-dev-1/+1
2022-11-07Rollup merge of #104056 - ripytide:patch-1, r=Mark-SimulacrumYuki Okushi-3/+3
Vec: IntoIterator signature consistency Also makes the code dryer.
2022-11-06cfg-step codeMark Rousskov-8/+4
2022-11-06Bump version placeholders to releaseMark Rousskov-13/+13
2022-11-06Vec: IntoIterator signature consistencyripytide-3/+3
Also makes the code dryer.
2022-11-05Fix unused_must_use warning for Box::from_rawAnett Seeker-1/+1
2022-11-05Enforce Tuple trait on Fn traitsMichael Goulet-0/+32