Rollup merge of #71220 - cuviper:std_or_patterns, r=Mark-Simulacrum

Dogfood or_patterns in the standard library

We can start using `or_patterns` in the standard library as a step toward stabilization.

cc #54883 @Centril
This commit is contained in:
Dylan DPC 2020-04-17 03:05:19 +02:00 committed by GitHub
commit 28964b4ef2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 14 additions and 16 deletions

View File

@ -2058,12 +2058,7 @@ fn range_search<BorrowType, K, V, Q: ?Sized, R: RangeBounds<Q>>(
(Excluded(s), Excluded(e)) if s == e => {
panic!("range start and end are equal and excluded in BTreeMap")
}
(Included(s), Included(e))
| (Included(s), Excluded(e))
| (Excluded(s), Included(e))
| (Excluded(s), Excluded(e))
if s > e =>
{
(Included(s) | Excluded(s), Included(e) | Excluded(e)) if s > e => {
panic!("range start is greater than range end in BTreeMap")
}
_ => {}

View File

@ -103,6 +103,7 @@
#![feature(new_uninit)]
#![feature(nll)]
#![feature(optin_builtin_traits)]
#![feature(or_patterns)]
#![feature(pattern)]
#![feature(ptr_internals)]
#![feature(ptr_offset_from)]

View File

@ -858,7 +858,7 @@ fn lt(&self, other: &Rhs) -> bool {
#[must_use]
#[stable(feature = "rust1", since = "1.0.0")]
fn le(&self, other: &Rhs) -> bool {
matches!(self.partial_cmp(other), Some(Less) | Some(Equal))
matches!(self.partial_cmp(other), Some(Less | Equal))
}
/// This method tests greater than (for `self` and `other`) and is used by the `>` operator.
@ -895,7 +895,7 @@ fn gt(&self, other: &Rhs) -> bool {
#[must_use]
#[stable(feature = "rust1", since = "1.0.0")]
fn ge(&self, other: &Rhs) -> bool {
matches!(self.partial_cmp(other), Some(Greater) | Some(Equal))
matches!(self.partial_cmp(other), Some(Greater | Equal))
}
}

View File

@ -3109,7 +3109,7 @@ fn le<I>(self, other: I) -> bool
Self::Item: PartialOrd<I::Item>,
Self: Sized,
{
matches!(self.partial_cmp(other), Some(Ordering::Less) | Some(Ordering::Equal))
matches!(self.partial_cmp(other), Some(Ordering::Less | Ordering::Equal))
}
/// Determines if the elements of this `Iterator` are lexicographically
@ -3149,7 +3149,7 @@ fn ge<I>(self, other: I) -> bool
Self::Item: PartialOrd<I::Item>,
Self: Sized,
{
matches!(self.partial_cmp(other), Some(Ordering::Greater) | Some(Ordering::Equal))
matches!(self.partial_cmp(other), Some(Ordering::Greater | Ordering::Equal))
}
/// Checks if the elements of this iterator are sorted.

View File

@ -105,6 +105,7 @@
#![feature(exhaustive_patterns)]
#![feature(no_core)]
#![feature(optin_builtin_traits)]
#![feature(or_patterns)]
#![feature(prelude_import)]
#![feature(repr_simd, platform_intrinsics)]
#![feature(rustc_attrs)]

View File

@ -54,7 +54,7 @@ pub fn parse_decimal(s: &str) -> ParseResult<'_> {
match s.first() {
None => Valid(Decimal::new(integral, b"", 0)),
Some(&b'e') | Some(&b'E') => {
Some(&b'e' | &b'E') => {
if integral.is_empty() {
return Invalid; // No digits before 'e'
}
@ -70,7 +70,7 @@ pub fn parse_decimal(s: &str) -> ParseResult<'_> {
match s.first() {
None => Valid(Decimal::new(integral, fractional, 0)),
Some(&b'e') | Some(&b'E') => parse_exp(integral, fractional, &s[1..]),
Some(&b'e' | &b'E') => parse_exp(integral, fractional, &s[1..]),
_ => Invalid, // Trailing junk after fractional part
}
}

View File

@ -422,14 +422,14 @@ fn determine_sign(sign: Sign, decoded: &FullDecoded, negative: bool) -> &'static
"+"
}
}
(_, Sign::Minus) | (_, Sign::MinusRaw) => {
(_, Sign::Minus | Sign::MinusRaw) => {
if negative {
"-"
} else {
""
}
}
(_, Sign::MinusPlus) | (_, Sign::MinusPlusRaw) => {
(_, Sign::MinusPlus | Sign::MinusPlusRaw) => {
if negative {
"-"
} else {

View File

@ -285,6 +285,7 @@
#![feature(never_type)]
#![feature(nll)]
#![feature(optin_builtin_traits)]
#![feature(or_patterns)]
#![feature(panic_info_message)]
#![feature(panic_internals)]
#![feature(panic_unwind)]

View File

@ -260,7 +260,7 @@ pub fn abort_selection(&self) -> Result<bool, Receiver<T>> {
let state = match self.state.load(Ordering::SeqCst) {
// Each of these states means that no further activity will happen
// with regard to abortion selection
s @ EMPTY | s @ DATA | s @ DISCONNECTED => s,
s @ (EMPTY | DATA | DISCONNECTED) => s,
// If we've got a blocked thread, then use an atomic to gain ownership
// of it (may fail)

View File

@ -205,7 +205,7 @@ pub fn recv(&self, deadline: Option<Instant>) -> Result<T, Failure<T>> {
// Messages which actually popped from the queue shouldn't count as
// a steal, so offset the decrement here (we already have our
// "steal" factored into the channel count above).
data @ Ok(..) | data @ Err(Upgraded(..)) => unsafe {
data @ (Ok(..) | Err(Upgraded(..))) => unsafe {
*self.queue.consumer_addition().steals.get() -= 1;
data
},