-
Notifications
You must be signed in to change notification settings - Fork 12.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rollup of 16 pull requests #70205
Rollup of 16 pull requests #70205
Commits on Mar 16, 2020
-
Configuration menu - View commit details
-
Copy full SHA for 57b1e7a - Browse repository at this point
Copy the full SHA 57b1e7aView commit details -
Configuration menu - View commit details
-
Copy full SHA for dcc2321 - Browse repository at this point
Copy the full SHA dcc2321View commit details -
rather than removing const_forget_box, stick an attribute on it and e…
…xplain it cant be called in ctfe yet
Configuration menu - View commit details
-
Copy full SHA for 0760803 - Browse repository at this point
Copy the full SHA 0760803View commit details
Commits on Mar 17, 2020
-
Configuration menu - View commit details
-
Copy full SHA for 1a764a7 - Browse repository at this point
Copy the full SHA 1a764a7View commit details -
Configuration menu - View commit details
-
Copy full SHA for 18adc45 - Browse repository at this point
Copy the full SHA 18adc45View commit details -
Configuration menu - View commit details
-
Copy full SHA for dfcfa17 - Browse repository at this point
Copy the full SHA dfcfa17View commit details -
Configuration menu - View commit details
-
Copy full SHA for f79a95a - Browse repository at this point
Copy the full SHA f79a95aView commit details -
Configuration menu - View commit details
-
Copy full SHA for b7fba97 - Browse repository at this point
Copy the full SHA b7fba97View commit details -
Configuration menu - View commit details
-
Copy full SHA for 37b5bfc - Browse repository at this point
Copy the full SHA 37b5bfcView commit details -
Remove useless derives on
GenFuture
Not sure why these were there, I guess because this type used to kind of be part of public API?
Configuration menu - View commit details
-
Copy full SHA for be62aed - Browse repository at this point
Copy the full SHA be62aedView commit details -
Configuration menu - View commit details
-
Copy full SHA for 6450101 - Browse repository at this point
Copy the full SHA 6450101View commit details -
Configuration menu - View commit details
-
Copy full SHA for 50b9d77 - Browse repository at this point
Copy the full SHA 50b9d77View commit details -
Configuration menu - View commit details
-
Copy full SHA for e419168 - Browse repository at this point
Copy the full SHA e419168View commit details -
Configuration menu - View commit details
-
Copy full SHA for 78274bc - Browse repository at this point
Copy the full SHA 78274bcView commit details -
Configuration menu - View commit details
-
Copy full SHA for db0126a - Browse repository at this point
Copy the full SHA db0126aView commit details
Commits on Mar 18, 2020
-
add
Option::{zip,zip_with}
methods under "option_zip" gateThis commit introduces 2 methods - `Option::zip` and `Option::zip_with` with respective signatures: - zip: `(Option<T>, Option<U>) -> Option<(T, U)>` - zip_with: `(Option<T>, Option<U>, (T, U) -> R) -> Option<R>` Both are under the feature gate "option_zip". I'm not sure about the name "zip", maybe we can find a better name for this. (I would prefer `union` for example, but this is a keyword :( ) -------------------------------------------------------------------------------- Recently in a russian rust begginers telegram chat a newbie asked (translated): > Are there any methods for these conversions: > > 1. `(Option<A>, Option<B>) -> Option<(A, B)>` > 2. `Vec<Option<T>> -> Option<Vec<T>>` > > ? While second (2.) is clearly `vec.into_iter().collect::<Option<Vec<_>>()`, the first one isn't that clear. I couldn't find anything similar in the `core` and I've come to this solution: ```rust let tuple: (Option<A>, Option<B>) = ...; let res: Option<(A, B)> = tuple.0.and_then(|a| tuple.1.map(|b| (a, b))); ``` However this solution isn't "nice" (same for just `match`/`if let`), so I thought that this functionality should be in `core`.
Configuration menu - View commit details
-
Copy full SHA for a5206f9 - Browse repository at this point
Copy the full SHA a5206f9View commit details -
fixes to
Option::{zip,zip_with}
- remove `#[inline]` attributes (see rust-lang#69997 (comment)) - fill tracking issue in `#[unstable]` attributes - slightly improve the docs
Configuration menu - View commit details
-
Copy full SHA for d36d3fa - Browse repository at this point
Copy the full SHA d36d3faView commit details -
Configuration menu - View commit details
-
Copy full SHA for 4c363e3 - Browse repository at this point
Copy the full SHA 4c363e3View commit details
Commits on Mar 19, 2020
-
Configuration menu - View commit details
-
Copy full SHA for 4a2d54d - Browse repository at this point
Copy the full SHA 4a2d54dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 121bffc - Browse repository at this point
Copy the full SHA 121bffcView commit details -
Derive PartialEq, Eq and Hash for RangeInclusive
The manual implementation of PartialEq, Eq and Hash for RangeInclusive was functionally equivalent to a derived implementation. This change removes the manual implementation and adds the respective derives. A side effect of this change is that the derives also add implementations for StructuralPartialEq and StructuralEq, which enables RangeInclusive to be used in const generics.
CDirkx committedMar 19, 2020 Configuration menu - View commit details
-
Copy full SHA for bd6deaa - Browse repository at this point
Copy the full SHA bd6deaaView commit details -
Configuration menu - View commit details
-
Copy full SHA for 0f0f254 - Browse repository at this point
Copy the full SHA 0f0f254View commit details -
CDirkx committed
Mar 19, 2020 Configuration menu - View commit details
-
Copy full SHA for 6570e27 - Browse repository at this point
Copy the full SHA 6570e27View commit details -
Make std::sync::Arc compatible with ThreadSanitizer
The memory fences used previously in Arc implementation are not properly understood by ThreadSanitizer as synchronization primitives. This had unfortunate effect where running any non-trivial program compiled with `-Z sanitizer=thread` would result in numerous false positives. Replace acquire fences with acquire loads when using ThreadSanitizer to address the issue.
Configuration menu - View commit details
-
Copy full SHA for fd0e15b - Browse repository at this point
Copy the full SHA fd0e15bView commit details
Commits on Mar 20, 2020
-
Configuration menu - View commit details
-
Copy full SHA for d6f3a43 - Browse repository at this point
Copy the full SHA d6f3a43View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3f6236e - Browse repository at this point
Copy the full SHA 3f6236eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 5444ade - Browse repository at this point
Copy the full SHA 5444adeView commit details -
Replace shared root with optional root
This simplifies the node manipulation, as we can (in later commits) always know when traversing nodes that we are not in a shared root.
Configuration menu - View commit details
-
Copy full SHA for e61f126 - Browse repository at this point
Copy the full SHA e61f126View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1c44f85 - Browse repository at this point
Copy the full SHA 1c44f85View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3c04fda - Browse repository at this point
Copy the full SHA 3c04fdaView commit details -
Drop NodeHeader type from BTree code
We no longer have a separate header because the shared root is gone; all code can work solely with leafs now.
Configuration menu - View commit details
-
Copy full SHA for 54b7c38 - Browse repository at this point
Copy the full SHA 54b7c38View commit details -
Simplify ensure_root_is_owned callers
This makes ensure_root_is_owned return a reference to the (now guaranteed to exist) root, allowing callers to operate on it without going through another unwrap. Unfortunately this is only rarely useful as it's frequently the case that both the length and the root need to be accessed and field-level borrows in methods don't yet exist.
Configuration menu - View commit details
-
Copy full SHA for 13f6d77 - Browse repository at this point
Copy the full SHA 13f6d77View commit details -
Configuration menu - View commit details
-
Copy full SHA for 4d85314 - Browse repository at this point
Copy the full SHA 4d85314View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2f7d7c0 - Browse repository at this point
Copy the full SHA 2f7d7c0View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9b9a22c - Browse repository at this point
Copy the full SHA 9b9a22cView commit details -
Configuration menu - View commit details
-
Copy full SHA for bce7f6f - Browse repository at this point
Copy the full SHA bce7f6fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 32670dd - Browse repository at this point
Copy the full SHA 32670ddView commit details -
Configuration menu - View commit details
-
Copy full SHA for 5930da4 - Browse repository at this point
Copy the full SHA 5930da4View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0d018a5 - Browse repository at this point
Copy the full SHA 0d018a5View commit details -
remove redundant import (clippy::single_component_path_imports)
remove redundant format!() call (clippy::useless_format) don't use ok() before calling expect() (clippy::ok_expect)
Configuration menu - View commit details
-
Copy full SHA for 951a366 - Browse repository at this point
Copy the full SHA 951a366View commit details -
Configuration menu - View commit details
-
Copy full SHA for ad00e91 - Browse repository at this point
Copy the full SHA ad00e91View commit details
Commits on Mar 21, 2020
-
Rollup merge of rust-lang#65097 - tmiasko:arc, r=Amanieu
Make std::sync::Arc compatible with ThreadSanitizer The memory fences used previously in Arc implementation are not properly understood by thread sanitizer as synchronization primitives. This had unfortunate effect where running any non-trivial program compiled with `-Z sanitizer=thread` would result in numerous false positives. Replace acquire fences with acquire loads to address the issue. Fixes rust-lang#39608.
Configuration menu - View commit details
-
Copy full SHA for 4b91729 - Browse repository at this point
Copy the full SHA 4b91729View commit details -
Rollup merge of rust-lang#69033 - jonas-schievink:resume-with-context…
…, r=tmandry Use generator resume arguments in the async/await lowering This removes the TLS requirement from async/await and enables it in `#![no_std]` crates. Closes rust-lang#56974 I'm not confident the HIR lowering is completely correct, there seem to be quite a few undocumented invariants in there. The `async-std` and tokio test suites are passing with these changes though.
Configuration menu - View commit details
-
Copy full SHA for ef7c8a1 - Browse repository at this point
Copy the full SHA ef7c8a1View commit details -
Rollup merge of rust-lang#69997 - WaffleLapkin:option_zip, r=LukasKal…
…bertodt add `Option::{zip,zip_with}` methods under "option_zip" gate This PR introduces 2 methods - `Option::zip` and `Option::zip_with` with respective signatures: - zip: `(Option<T>, Option<U>) -> Option<(T, U)>` - zip_with: `(Option<T>, Option<U>, (T, U) -> R) -> Option<R>` Both are under the feature gate "option_zip". I'm not sure about the name "zip", maybe we can find a better name for this. (I would prefer `union` for example, but this is a keyword :( ) -------------------------------------------------------------------------------- Recently in a russian rust begginers telegram chat a newbie asked (translated): > Are there any methods for these conversions: > > 1. `(Option<A>, Option<B>) -> Option<(A, B)>` > 2. `Vec<Option<T>> -> Option<Vec<T>>` > > ? While second (2.) is clearly `vec.into_iter().collect::<Option<Vec<_>>()`, the first one isn't that clear. I couldn't find anything similar in the `core` and I've come to this solution: ```rust let tuple: (Option<A>, Option<B>) = ...; let res: Option<(A, B)> = tuple.0.and_then(|a| tuple.1.map(|b| (a, b))); ``` However this solution isn't "nice" (same for just `match`/`if let`), so I thought that this functionality should be in `core`.
Configuration menu - View commit details
-
Copy full SHA for 801a25a - Browse repository at this point
Copy the full SHA 801a25aView commit details -
Rollup merge of rust-lang#70038 - DutchGhost:const-forget-tests, r=Ra…
…lfJung Remove the call that makes miri fail Fixes the concern raised in https://github.com/rust-lang/rust/pull/69645/files#r392884274 cc @RalfJung
Configuration menu - View commit details
-
Copy full SHA for 45b10f6 - Browse repository at this point
Copy the full SHA 45b10f6View commit details -
Rollup merge of rust-lang#70058 - Centril:fix-70050, r=petrochenkov
can_begin_literal_maybe_minus: `true` on `"-"? lit` NTs. Make `can_begin_literal_or_bool` (renamed to `can_begin_literal_maybe_minus`) accept `NtLiteral(e) | NtExpr(e)` where `e` is either a literal or a negated literal. Fixes rust-lang#70050. r? @petrochenkov
Configuration menu - View commit details
-
Copy full SHA for 67e418c - Browse repository at this point
Copy the full SHA 67e418cView commit details -
Rollup merge of rust-lang#70111 - Mark-Simulacrum:btree-no-shared, r=…
…cuviper BTreeMap: remove shared root This replaces the shared root with `Option`s in the BTreeMap code, and then slightly cleans up the node manipulation code taking advantage of the removal of the shared root. I expect that further simplification is possible, but wanted to get this posted for initial review. Note that `BTreeMap::new()` continues to not allocate. Benchmarks seem within the margin of error/unaffected, as expected for an entirely predictable branch. ``` name alloc-bench-a ns/iter alloc-bench-b ns/iter diff ns/iter diff % speedup btree::map::iter_mut_20 20 21 1 5.00% x 0.95 btree::set::clone_100 1,360 1,439 79 5.81% x 0.95 btree::set::clone_100_and_into_iter 1,319 1,434 115 8.72% x 0.92 btree::set::clone_10k 143,515 150,991 7,476 5.21% x 0.95 btree::set::clone_10k_and_clear 142,792 152,916 10,124 7.09% x 0.93 btree::set::clone_10k_and_into_iter 146,019 154,561 8,542 5.85% x 0.94 ```
Configuration menu - View commit details
-
Copy full SHA for 9d9e381 - Browse repository at this point
Copy the full SHA 9d9e381View commit details -
Rollup merge of rust-lang#70139 - RalfJung:delay, r=eddyb
add delay_span_bug to TransmuteSizeDiff, just to be sure See rust-lang#69839 (comment). r? @eddyb
Configuration menu - View commit details
-
Copy full SHA for c4a5cc1 - Browse repository at this point
Copy the full SHA c4a5cc1View commit details -
Rollup merge of rust-lang#70165 - matthewjasper:erase-more, r=nikomat…
…sakis Remove the erase regions MIR transform We now ensure that MIR never contains unerased regions in the first place.
Configuration menu - View commit details
-
Copy full SHA for b24d168 - Browse repository at this point
Copy the full SHA b24d168View commit details -
Rollup merge of rust-lang#70166 - CDirkx:range-inclusive-derives, r=c…
…ramertj Derive PartialEq, Eq and Hash for RangeInclusive The manual implementation of `PartialEq`, `Eq` and `Hash` for `RangeInclusive` was functionally equivalent to a derived implementation. This change removes the manual implementation and adds the respective derives. A side effect of this change is that the derives also add implementations for `StructuralPartialEq` and `StructuralEq`, which enables `RangeInclusive` to be used in const generics, closing rust-lang#70155. This change is enabled by rust-lang#68835, which changed the field `is_empty: Option<bool>` to `exhausted: bool` removing the need for *semantic* equality instead of *structural* equality. ## PartialEq original [`PartialEq`](https://github.com/rust-lang/rust/blob/f4c675c476c18b1a11041193f2f59d695b126bc8/src/libcore/ops/range.rs#L353-L359) implementation: ```rust #[stable(feature = "inclusive_range", since = "1.26.0")] impl<Idx: PartialEq> PartialEq for RangeInclusive<Idx> { #[inline] fn eq(&self, other: &Self) -> bool { self.start == other.start && self.end == other.end && self.exhausted == other.exhausted } } ``` expanded derive implementation (using `cargo expand ops::range`): ```rust #[stable(feature = "inclusive_range", since = "1.26.0")] impl<Idx> crate::marker::StructuralPartialEq for RangeInclusive<Idx> {} #[automatically_derived] #[allow(unused_qualifications)] #[stable(feature = "inclusive_range", since = "1.26.0")] impl<Idx: crate::cmp::PartialEq> crate::cmp::PartialEq for RangeInclusive<Idx> { #[inline] fn eq(&self, other: &RangeInclusive<Idx>) -> bool { match *other { RangeInclusive { start: ref __self_1_0,end: ref __self_1_1, exhausted: ref __self_1_2 } => match *self { RangeInclusive { start: ref __self_0_0, end: ref __self_0_1, exhausted: ref __self_0_2 } => { (*__self_0_0) == (*__self_1_0) && (*__self_0_1) == (*__self_1_1) && (*__self_0_2) == (*__self_1_2) } }, } } #[inline] fn ne(&self, other: &RangeInclusive<Idx>) -> bool { match *other { RangeInclusive { start: ref __self_1_0, end: ref __self_1_1, exhausted: ref __self_1_2 } => match *self { RangeInclusive { start: ref __self_0_0, end: ref __self_0_1exhausted: ref __self_0_2 } => { (*__self_0_0) != (*__self_1_0) || (*__self_0_1) != (*__self_1_1) || (*__self_0_2) != (*__self_1_2) } }, } } } ``` These implementations both test for *structural* equality, with the same order of field comparisons, and the bound `Idx: PartialEq` is the same. ## Eq original [`Eq`](https://github.com/rust-lang/rust/blob/f4c675c476c18b1a11041193f2f59d695b126bc8/src/libcore/ops/range.rs#L361-L362) implementation: ```rust #[stable(feature = "inclusive_range", since = "1.26.0")] impl<Idx: Eq> Eq for RangeInclusive<Idx> {} ``` expanded derive implementation (using `cargo expand ops::range`): ```rust #[stable(feature = "inclusive_range", since = "1.26.0")] impl<Idx> crate::marker::StructuralEq for RangeInclusive<Idx> {} #[automatically_derived] #[allow(unused_qualifications)] #[stable(feature = "inclusive_range", since = "1.26.0")] impl<Idx: crate::cmp::Eq> crate::cmp::Eq for RangeInclusive<Idx> { #[inline] #[doc(hidden)] fn assert_receiver_is_total_eq(&self) -> () { { let _: crate::cmp::AssertParamIsEq<Idx>; let _: crate::cmp::AssertParamIsEq<Idx>; let _: crate::cmp::AssertParamIsEq<bool>; } } } ``` These implementations are equivalent since `Eq` is just a marker trait and the bound `Idx: Eq` is the same. ## Hash original [`Hash`](https://github.com/rust-lang/rust/blob/f4c675c476c18b1a11041193f2f59d695b126bc8/src/libcore/ops/range.rs#L364-L371) implementation: ```rust #[stable(feature = "inclusive_range", since = "1.26.0")] impl<Idx: Hash> Hash for RangeInclusive<Idx> { fn hash<H: Hasher>(&self, state: &mut H) { self.start.hash(state); self.end.hash(state); self.exhausted.hash(state); } } ``` expanded derive implementation (using `cargo expand ops::range`): ```rust #[automatically_derived] #[allow(unused_qualifications)] #[stable(feature = "inclusive_range", since = "1.26.0")] impl<Idx: crate::hash::Hash> crate::hash::Hash for RangeInclusive<Idx> { fn hash<__H: crate::hash::Hasher>(&self, state: &mut __H) -> () { match *self { RangeInclusive { start: ref __self_0_0, end: ref __self_0_1, exhausted: ref __self_0_2 } => { crate::hash::Hash::hash(&(*__self_0_0), state); crate::hash::Hash::hash(&(*__self_0_1), state); crate::hash::Hash::hash(&(*__self_0_2), state) } } } } ``` These implementations are functionally equivalent, with the same order of field hashing, and the bound `Idx: Hash` is the same.
Configuration menu - View commit details
-
Copy full SHA for 7b420ae - Browse repository at this point
Copy the full SHA 7b420aeView commit details -
Rollup merge of rust-lang#70176 - rylev:ice-tests, r=Centril
Add tests for rust-lang#58319 and rust-lang#65131 Fixes rust-lang#58319 and fixes rust-lang#65131
Configuration menu - View commit details
-
Copy full SHA for 855eac3 - Browse repository at this point
Copy the full SHA 855eac3View commit details -
Rollup merge of rust-lang#70177 - bjorn3:patch-2, r=Dylan-DPC
Fix oudated comment for NamedRegionMap `ResolveLifetimes` uses a `LocalDefId` since rust-lang#66131.
Configuration menu - View commit details
-
Copy full SHA for a3771e4 - Browse repository at this point
Copy the full SHA a3771e4View commit details -
Rollup merge of rust-lang#70184 - Centril:include-mod-relativism, r=p…
…etrochenkov expand_include: set `.directory` to dir of included file. Resolves the regression noted in rust-lang#69838. r? @petrochenkov cc @eddyb @Mark-Simulacrum
Configuration menu - View commit details
-
Copy full SHA for 621f2b7 - Browse repository at this point
Copy the full SHA 621f2b7View commit details -
Rollup merge of rust-lang#70187 - matthiaskrgr:cl2ppy, r=Mark-Simulacrum
more clippy fixes * remove redundant returns (clippy::needless_return) * remove redundant import (clippy::single_component_path_imports) * remove redundant format!() call (clippy::useless_format) * don't use ok() before calling expect() (clippy::ok_expect)
Configuration menu - View commit details
-
Copy full SHA for 3e6b1ac - Browse repository at this point
Copy the full SHA 3e6b1acView commit details -
Rollup merge of rust-lang#70188 - GuillaumeGomez:cleanup-e0439, r=Dyl…
…an-DPC Clean up E0439 explanation r? @Dylan-DPC
Configuration menu - View commit details
-
Copy full SHA for 832daf7 - Browse repository at this point
Copy the full SHA 832daf7View commit details -
Rollup merge of rust-lang#70189 - RalfJung:is_signed, r=eddyb
Abi::is_signed: assert that we are a Scalar A bit more sanity checking, suggested by @eddyb. This makes this method actually "safer" than `TyS::is_signed`, so I made sure Miri consistently uses the `Abi` version. Though I am not sure if this would have caught the mistake where the layout of a zero-sized enum was asked for its sign. r? @eddyb
Configuration menu - View commit details
-
Copy full SHA for 937ca43 - Browse repository at this point
Copy the full SHA 937ca43View commit details -
Rollup merge of rust-lang#70194 - kornelski:must_split, r=joshtriplett
#[must_use] on split_off() I've noticed this function used for truncation in the wild. `must_use` will clear that up.
Configuration menu - View commit details
-
Copy full SHA for 54285db - Browse repository at this point
Copy the full SHA 54285dbView commit details