about summary refs log tree commit diff
path: root/src/liballoc
AgeCommit message (Collapse)AuthorLines
2019-02-16Rollup merge of #58074 - scottmcm:stabilize-sort_by_cached_key, r=SimonSapinkennytm-4/+5
Stabilize slice_sort_by_cached_key I was going to ask on the tracking issue (https://github.com/rust-lang/rust/issues/34447), but decided to just send this and hope for an FCP here. The method was added last March by https://github.com/rust-lang/rust/pull/48639. Signature: https://doc.rust-lang.org/std/primitive.slice.html#method.sort_by_cached_key ```rust impl [T] { pub fn sort_by_cached_key<K, F>(&mut self, f: F) where F: FnMut(&T) -> K, K: Ord; } ``` That's an identical signature to the existing `sort_by_key`, so I think the questions are just naming, implementation, and the usual "do we want this?". The implementation seems to have proven its use in rustc at least, which many uses: https://github.com/rust-lang/rust/search?l=Rust&q=sort_by_cached_key (I'm asking because it's exactly what I just needed the other day: ```rust all_positions.sort_by_cached_key(|&n| data::CITIES.iter() .map(|x| *metric_closure.get_edge(n, x.pos).unwrap()) .sum::<usize>() ); ``` since caching that key is a pretty obviously good idea.) Closes #34447
2019-02-12Merging masterMatthias Einwag-128/+134
2019-02-12Revert "Remove mentions of unstable sort_by_cached key from stable ↵Scott McMurray-0/+4
documentation" This reverts commit 9c7b69e17909ceb090a1c4b8882a4e0924a2a755.
2019-02-12Stabilize slice_sort_by_cached_keyScott McMurray-4/+1
2019-02-12Auto merge of #58051 - SimonSapin:str_escape, r=alexcrichtonbors-73/+34
Stabilize str::escape_* methods with new return types… … that implement `Display` and `Iterator<Item=char>`, as proposed in FCP: https://github.com/rust-lang/rust/issues/27791#issuecomment-376864727
2019-02-12Auto merge of #58341 - alexreg:cosmetic-2-doc-comments, r=steveklabnikbors-48/+46
Cosmetic improvements to doc comments This has been factored out from https://github.com/rust-lang/rust/pull/58036 to only include changes to documentation comments (throughout the rustc codebase). r? @steveklabnik Once you're happy with this, maybe we could get it through with r=1, so it doesn't constantly get invalidated? (I'm not sure this will be an issue, but just in case...) Anyway, thanks for your advice so far!
2019-02-12Move str::escape_* to libcoreSimon Sapin-118/+0
2019-02-12Stabilize str::escape_* methodsSimon Sapin-14/+7
FCP: https://github.com/rust-lang/rust/issues/27791#issuecomment-376864727
2019-02-12New return types for str::escape_* that impl Display and Iterator<char>Simon Sapin-43/+129
As FCP’ed in the tracking issue: https://github.com/rust-lang/rust/issues/27791#issuecomment-376864727
2019-02-11Require a list of features to allow in `allow_internal_unstable`Oliver Scherer-1/+2
2019-02-10libs: doc commentsAlexander Regueiro-36/+34
2019-02-10tests: doc commentsAlexander Regueiro-12/+12
2019-02-09Rollup merge of #58275 - RalfJung:miri-test-libcore, r=Mark-SimulacrumMazdak Farrokhzad-0/+43
libcore, liballoc: disable tests in Miri I am going to run the libcore and liballoc unit test suites in Miri. Not all tests pass. This PR disables a whole bunch of tests when running in Miri, to get us to a baseline from which I can investigate failures. Cc @SimonSapin @alexcrichton
2019-02-07disable tests in MiriRalf Jung-0/+43
2019-02-07Remove images' url to make it work even without internet connectionGuillaume Gomez-3/+1
2019-02-07Rollup merge of #58123 - lnicola:binary-heap-no-bounds-checks, r=sfacklerkennytm-3/+8
Avoid some bounds checks in binary_heap::{PeekMut,Hole} Fixes #58121.
2019-02-03Update the future/task APIMatthias Einwag-137/+3
This change updates the future and task API as discussed in the stabilization RFC at https://github.com/rust-lang/rfcs/pull/2592. Changes: - Replacing UnsafeWake with RawWaker and RawWakerVtable - Removal of LocalWaker - Removal of Arc-based Wake trait
2019-02-03Auto merge of #58081 - Centril:liballoc-2018, r=oli-obkbors-392/+359
Transition liballoc to Rust 2018 This transitions liballoc to Rust 2018 edition and applies relevant idiom lints. I also did a small bit of drive-by cleanup along the way. r? @oli-obk I started with liballoc since it seemed easiest. In particular, adding `edition = "2018"` to libcore gave me way too many errors due to stdsimd. Ideally we should be able to continue this crate-by-crate until all crates use 2018.
2019-02-03Avoid some bounds checks in binary_heap::{PeekMut,Hole}Laurențiu Nicola-3/+8
2019-02-03liballoc: revert nested imports style changes.Mazdak Farrokhzad-406/+305
2019-02-02liballoc: remove redundant extern crate.Mazdak Farrokhzad-2/+0
2019-02-02liballoc: fix some idiom lints.Mazdak Farrokhzad-87/+90
2019-02-02liballoc: elide &'static.Mazdak Farrokhzad-2/+2
2019-02-02liballoc: elide some lifetimes.Mazdak Farrokhzad-126/+119
2019-02-02liballoc: apply uniform_paths.Mazdak Farrokhzad-19/+20
2019-02-02liballoc: prefer imports of borrow from libcore.Mazdak Farrokhzad-14/+13
2019-02-02liballoc: adjust abolute imports + more import fixes.Mazdak Farrokhzad-25/+15
2019-02-02liballoc: refactor & fix some imports.Mazdak Farrokhzad-342/+424
2019-02-02liballoc: cargo check passes on 2018Mazdak Farrokhzad-60/+61
2019-02-02liballoc => edition = 2018.Mazdak Farrokhzad-0/+1
2019-02-01Stabilize split_ascii_whitespaceSimon Sapin-2/+1
Tracking issue FCP to merge: https://github.com/rust-lang/rust/issues/48656#issuecomment-442372750
2019-01-31Auto merge of #56696 - jonas-schievink:weak-counts, r=alexcrichtonbors-1/+142
Implement Weak::{strong_count, weak_count} The counters are also useful on `Weak`, not just on strong references (`Rc` or `Arc`). In situations where there are still strong references around, you can also get these counts by temporarily upgrading and adjusting the values accordingly. Using the methods introduced here is simpler to do, less error-prone (since you can't forget to adjust the counts), can also be used when no strong references are around anymore, and might be more efficient due to not having to temporarily create an `Rc`. This is mainly useful in assertions or tests of complex data structures. Data structures might have internal invariants that make them the sole owner of a `Weak` pointer, and an assertion on the weak count could be used to ensure that this indeed happens as expected. Due to the presence of `Weak::upgrade`, the `strong_count` becomes less useful, but it still seems worthwhile to mirror the API of `Rc`. TODO: * [X] Tracking issue - https://github.com/rust-lang/rust/issues/57977 Closes https://github.com/rust-lang/rust/issues/50158
2019-01-31Rollup merge of #57934 - dwijnand:from-Arc/Rc-to-NonNull, r=alexcrichtonMazdak Farrokhzad-0/+42
Introduce into_raw_non_null on Rc and Arc None
2019-01-30override `VecDeque`'s `Iter::try_fold`Andre Bogus-1/+47
2019-01-29Add tracking issue to unstable attributeJonas Schievink-4/+4
2019-01-29Make weak_count return an Option<usize>Jonas Schievink-26/+22
2019-01-29Implement a slightly racy `sync::Weak::weak_count`Jonas Schievink-5/+70
2019-01-29Implement Weak::{strong_count, weak_count}Jonas Schievink-0/+80
2019-01-28Introduce into_raw_non_null on Rc and ArcDale Wijnand-0/+42
2019-01-28Rollup merge of #57045 - RalfJung:kill-more-uninit, r=SimonSapinMazdak Farrokhzad-21/+23
Kill remaining uses of mem::uninitialized in libcore, liballoc Kill remaining uses of mem::uninitialized in libcore and liballoc, and enable a lint that will warn when uses are added again in the future. To avoid casting raw pointers around (which is always very dangerous because it is not typechecked at all -- it doesn't even get the "same size" sanity check that `transmute` gets), I also added two new functions to `MaybeUninit`: ```rust /// Get a pointer to the first contained values. pub fn first_ptr(this: &[MaybeUninit<T>]) -> *const T { this as *const [MaybeUninit<T>] as *const T } /// Get a mutable pointer to the first contained values. pub fn first_mut_ptr(this: &mut [MaybeUninit<T>]) -> *mut T { this as *mut [MaybeUninit<T>] as *mut T } ``` I changed some of the existing code to use array-of-`MaybeUninit` instead of `MaybeUninit`-of-array, successfully removing raw pointer casts there as well.
2019-01-28rename first_mut_ptr -> first_ptr_mutRalf Jung-5/+5
2019-01-28Use warn() for extra diagnostics; with -D warnings this leads to errorsRalf Jung-2/+2
This is needed to properly respect "deny_warnings = false" in config.toml
2019-01-28add macro for creating uninitialized arrayRalf Jung-9/+3
2019-01-28avoid some raw ptr casts in BTreeMapRalf Jung-7/+10
2019-01-28avoid mem::uninitialized in BTreeMapRalf Jung-9/+17
2019-01-28liballoc: remove unneeded allow(deprecated)Ralf Jung-3/+0
2019-01-27impl Generator for Pin<Box<Generator>>Wim Looman-0/+10
2019-01-27Change generator trait to use pinningWim Looman-7/+6
2019-01-26Replace deprecated ATOMIC_INIT constsMark Rousskov-4/+4
2019-01-26Bump bootstrap compiler to 1.33 betaMark Rousskov-1/+0