Rollup merge of #100604 - dtolnay:okorerr, r=m-ou-se

Remove unstable Result::into_ok_or_err

Pending FCP: https://github.com/rust-lang/rust/issues/82223#issuecomment-1214920203

```@rustbot``` label +waiting-on-fcp
This commit is contained in:
Yuki Okushi 2022-08-26 09:51:44 +09:00 committed by GitHub
commit ba31a9b505
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 11 additions and 61 deletions

View File

@ -14,7 +14,6 @@ index 06c7be0..359e2e7 100644
@@ -75,7 +75,6 @@ @@ -75,7 +75,6 @@
#![feature(never_type)] #![feature(never_type)]
#![feature(unwrap_infallible)] #![feature(unwrap_infallible)]
#![feature(result_into_ok_or_err)]
-#![feature(portable_simd)] -#![feature(portable_simd)]
#![feature(ptr_metadata)] #![feature(ptr_metadata)]
#![feature(once_cell)] #![feature(once_cell)]

View File

@ -1,4 +1,5 @@
use super::{Byte, Def, Ref}; use super::{Byte, Def, Ref};
use std::ops::ControlFlow;
#[cfg(test)] #[cfg(test)]
mod tests; mod tests;
@ -86,17 +87,18 @@ where
F: Fn(D) -> bool, F: Fn(D) -> bool,
{ {
match self { match self {
Self::Seq(elts) => elts Self::Seq(elts) => match elts.into_iter().map(|elt| elt.prune(f)).try_fold(
.into_iter() Tree::unit(),
.map(|elt| elt.prune(f)) |elts, elt| {
.try_fold(Tree::unit(), |elts, elt| {
if elt == Tree::uninhabited() { if elt == Tree::uninhabited() {
Err(Tree::uninhabited()) ControlFlow::Break(Tree::uninhabited())
} else { } else {
Ok(elts.then(elt)) ControlFlow::Continue(elts.then(elt))
} }
}) },
.into_ok_or_err(), ) {
ControlFlow::Break(node) | ControlFlow::Continue(node) => node,
},
Self::Alt(alts) => alts Self::Alt(alts) => alts
.into_iter() .into_iter()
.map(|alt| alt.prune(f)) .map(|alt| alt.prune(f))

View File

@ -1,11 +1,4 @@
#![feature( #![feature(alloc_layout_extra, control_flow_enum, decl_macro, iterator_try_reduce, never_type)]
alloc_layout_extra,
control_flow_enum,
decl_macro,
iterator_try_reduce,
never_type,
result_into_ok_or_err
)]
#![allow(dead_code, unused_variables)] #![allow(dead_code, unused_variables)]
#![deny(rustc::untranslatable_diagnostic)] #![deny(rustc::untranslatable_diagnostic)]
#![deny(rustc::diagnostic_outside_of_impl)] #![deny(rustc::diagnostic_outside_of_impl)]

View File

@ -1776,40 +1776,6 @@ impl<T, E> Result<Result<T, E>, E> {
} }
} }
impl<T> Result<T, T> {
/// Returns the [`Ok`] value if `self` is `Ok`, and the [`Err`] value if
/// `self` is `Err`.
///
/// In other words, this function returns the value (the `T`) of a
/// `Result<T, T>`, regardless of whether or not that result is `Ok` or
/// `Err`.
///
/// This can be useful in conjunction with APIs such as
/// [`Atomic*::compare_exchange`], or [`slice::binary_search`], but only in
/// cases where you don't care if the result was `Ok` or not.
///
/// [`Atomic*::compare_exchange`]: crate::sync::atomic::AtomicBool::compare_exchange
///
/// # Examples
///
/// ```
/// #![feature(result_into_ok_or_err)]
/// let ok: Result<u32, u32> = Ok(3);
/// let err: Result<u32, u32> = Err(4);
///
/// assert_eq!(ok.into_ok_or_err(), 3);
/// assert_eq!(err.into_ok_or_err(), 4);
/// ```
#[inline]
#[unstable(feature = "result_into_ok_or_err", reason = "newly added", issue = "82223")]
pub const fn into_ok_or_err(self) -> T {
match self {
Ok(v) => v,
Err(v) => v,
}
}
}
// This is a separate function to reduce the code size of the methods // This is a separate function to reduce the code size of the methods
#[cfg(not(feature = "panic_immediate_abort"))] #[cfg(not(feature = "panic_immediate_abort"))]
#[inline(never)] #[inline(never)]

View File

@ -75,7 +75,6 @@
#![feature(const_pin)] #![feature(const_pin)]
#![feature(never_type)] #![feature(never_type)]
#![feature(unwrap_infallible)] #![feature(unwrap_infallible)]
#![feature(result_into_ok_or_err)]
#![feature(pointer_byte_offsets)] #![feature(pointer_byte_offsets)]
#![feature(portable_simd)] #![feature(portable_simd)]
#![feature(ptr_metadata)] #![feature(ptr_metadata)]

View File

@ -95,15 +95,6 @@ fn test_unwrap_or() {
assert_eq!(ok_err.unwrap_or(50), 50); assert_eq!(ok_err.unwrap_or(50), 50);
} }
#[test]
fn test_ok_or_err() {
let ok: Result<isize, isize> = Ok(100);
let err: Result<isize, isize> = Err(200);
assert_eq!(ok.into_ok_or_err(), 100);
assert_eq!(err.into_ok_or_err(), 200);
}
#[test] #[test]
fn test_unwrap_or_else() { fn test_unwrap_or_else() {
fn handler(msg: &'static str) -> isize { fn handler(msg: &'static str) -> isize {