mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 14:55:26 +00:00
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:
commit
ba31a9b505
@ -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)]
|
||||||
|
@ -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))
|
||||||
|
@ -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)]
|
||||||
|
@ -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)]
|
||||||
|
@ -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)]
|
||||||
|
@ -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 {
|
||||||
|
Loading…
Reference in New Issue
Block a user