Rollup merge of #141072 - Rynibami:stabilize-const-result-flatten, r=jhpratt
Stabilize feature `result_flattening` Stabilizes the `Result::flatten` method ## Implementations - [x] Implementation `Result::flatten`: https://github.com/rust-lang/rust/pull/70140 - [x] Implementation `const` `Result::flatten`: https://github.com/rust-lang/rust/pull/130692 - [x] Update stabilization attribute macros (this PR) ## Stabilization process - [x] Created this PR [suggested](https://github.com/rust-lang/rust/issues/70142#issuecomment-2885044548) by ``@RalfJung`` - [x] FCP (haven't found any, is it applicable here?) - [ ] Close issue rust-lang/rust#70142
This commit is contained in:
commit
241ec137fb
6 changed files with 13 additions and 17 deletions
|
|
@ -12,7 +12,6 @@
|
|||
#![feature(decl_macro)]
|
||||
#![feature(panic_backtrace_config)]
|
||||
#![feature(panic_update_hook)]
|
||||
#![feature(result_flattening)]
|
||||
#![feature(rustdoc_internals)]
|
||||
#![feature(try_blocks)]
|
||||
// tidy-alphabetical-end
|
||||
|
|
|
|||
|
|
@ -1722,7 +1722,6 @@ impl<T, E> Result<Result<T, E>, E> {
|
|||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(result_flattening)]
|
||||
/// let x: Result<Result<&'static str, u32>, u32> = Ok(Ok("hello"));
|
||||
/// assert_eq!(Ok("hello"), x.flatten());
|
||||
///
|
||||
|
|
@ -1736,14 +1735,14 @@ impl<T, E> Result<Result<T, E>, E> {
|
|||
/// Flattening only removes one level of nesting at a time:
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(result_flattening)]
|
||||
/// let x: Result<Result<Result<&'static str, u32>, u32>, u32> = Ok(Ok(Ok("hello")));
|
||||
/// assert_eq!(Ok(Ok("hello")), x.flatten());
|
||||
/// assert_eq!(Ok("hello"), x.flatten().flatten());
|
||||
/// ```
|
||||
#[inline]
|
||||
#[unstable(feature = "result_flattening", issue = "70142")]
|
||||
#[rustc_const_unstable(feature = "result_flattening", issue = "70142")]
|
||||
#[stable(feature = "result_flattening", since = "CURRENT_RUSTC_VERSION")]
|
||||
#[rustc_allow_const_fn_unstable(const_precise_live_drops)]
|
||||
#[rustc_const_stable(feature = "result_flattening", since = "CURRENT_RUSTC_VERSION")]
|
||||
pub const fn flatten(self) -> Result<T, E> {
|
||||
// FIXME(const-hack): could be written with `and_then`
|
||||
match self {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#![warn(clippy::map_flatten)]
|
||||
#![feature(result_flattening)]
|
||||
|
||||
//@no-rustfix
|
||||
// issue #8506, multi-line
|
||||
#[rustfmt::skip]
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
#![feature(result_flattening)]
|
||||
#![allow(
|
||||
clippy::let_underscore_untyped,
|
||||
clippy::missing_docs_in_private_items,
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
#![feature(result_flattening)]
|
||||
#![allow(
|
||||
clippy::let_underscore_untyped,
|
||||
clippy::missing_docs_in_private_items,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error: called `map(..).flatten()` on `Iterator`
|
||||
--> tests/ui/map_flatten_fixable.rs:17:47
|
||||
--> tests/ui/map_flatten_fixable.rs:16:47
|
||||
|
|
||||
LL | let _: Vec<_> = vec![5_i8; 6].into_iter().map(option_id).flatten().collect();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: try replacing `map` with `filter_map` and remove the `.flatten()`: `filter_map(option_id)`
|
||||
|
|
@ -8,43 +8,43 @@ LL | let _: Vec<_> = vec![5_i8; 6].into_iter().map(option_id).flatten().coll
|
|||
= help: to override `-D warnings` add `#[allow(clippy::map_flatten)]`
|
||||
|
||||
error: called `map(..).flatten()` on `Iterator`
|
||||
--> tests/ui/map_flatten_fixable.rs:19:47
|
||||
--> tests/ui/map_flatten_fixable.rs:18:47
|
||||
|
|
||||
LL | let _: Vec<_> = vec![5_i8; 6].into_iter().map(option_id_ref).flatten().collect();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try replacing `map` with `filter_map` and remove the `.flatten()`: `filter_map(option_id_ref)`
|
||||
|
||||
error: called `map(..).flatten()` on `Iterator`
|
||||
--> tests/ui/map_flatten_fixable.rs:21:47
|
||||
--> tests/ui/map_flatten_fixable.rs:20:47
|
||||
|
|
||||
LL | let _: Vec<_> = vec![5_i8; 6].into_iter().map(option_id_closure).flatten().collect();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try replacing `map` with `filter_map` and remove the `.flatten()`: `filter_map(option_id_closure)`
|
||||
|
||||
error: called `map(..).flatten()` on `Iterator`
|
||||
--> tests/ui/map_flatten_fixable.rs:23:47
|
||||
--> tests/ui/map_flatten_fixable.rs:22:47
|
||||
|
|
||||
LL | let _: Vec<_> = vec![5_i8; 6].into_iter().map(|x| x.checked_add(1)).flatten().collect();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try replacing `map` with `filter_map` and remove the `.flatten()`: `filter_map(|x| x.checked_add(1))`
|
||||
|
||||
error: called `map(..).flatten()` on `Iterator`
|
||||
--> tests/ui/map_flatten_fixable.rs:27:47
|
||||
--> tests/ui/map_flatten_fixable.rs:26:47
|
||||
|
|
||||
LL | let _: Vec<_> = vec![5_i8; 6].into_iter().map(|x| 0..x).flatten().collect();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^ help: try replacing `map` with `flat_map` and remove the `.flatten()`: `flat_map(|x| 0..x)`
|
||||
|
||||
error: called `map(..).flatten()` on `Option`
|
||||
--> tests/ui/map_flatten_fixable.rs:31:40
|
||||
--> tests/ui/map_flatten_fixable.rs:30:40
|
||||
|
|
||||
LL | let _: Option<_> = (Some(Some(1))).map(|x| x).flatten();
|
||||
| ^^^^^^^^^^^^^^^^^^^^ help: try replacing `map` with `and_then` and remove the `.flatten()`: `and_then(|x| x)`
|
||||
|
||||
error: called `map(..).flatten()` on `Result`
|
||||
--> tests/ui/map_flatten_fixable.rs:35:42
|
||||
--> tests/ui/map_flatten_fixable.rs:34:42
|
||||
|
|
||||
LL | let _: Result<_, &str> = (Ok(Ok(1))).map(|x| x).flatten();
|
||||
| ^^^^^^^^^^^^^^^^^^^^ help: try replacing `map` with `and_then` and remove the `.flatten()`: `and_then(|x| x)`
|
||||
|
||||
error: called `map(..).flatten()` on `Iterator`
|
||||
--> tests/ui/map_flatten_fixable.rs:45:10
|
||||
--> tests/ui/map_flatten_fixable.rs:44:10
|
||||
|
|
||||
LL | .map(|n| match n {
|
||||
| __________^
|
||||
|
|
@ -74,7 +74,7 @@ LL ~ });
|
|||
|
|
||||
|
||||
error: called `map(..).flatten()` on `Option`
|
||||
--> tests/ui/map_flatten_fixable.rs:66:10
|
||||
--> tests/ui/map_flatten_fixable.rs:65:10
|
||||
|
|
||||
LL | .map(|_| {
|
||||
| __________^
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue