make unstable Result::flatten a const fn · qinheping/verify-rust-std@98aba66 (original) (raw)
2 files changed
lines changed
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -2538,6 +2538,7 @@ impl Option<Option> { | ||
| 2538 | 2538 | #[stable(feature = "option_flattening", since = "1.40.0")] |
| 2539 | 2539 | #[rustc_const_unstable(feature = "const_option", issue = "67441")] |
| 2540 | 2540 | pub const fn flatten(self) -> Option<T> { |
| 2541 | +// FIXME(const-hack): could be written with `and_then` | |
| 2541 | 2542 | match self { |
| 2542 | 2543 | Some(inner) => inner, |
| 2543 | 2544 | None => None, |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1676,8 +1676,13 @@ impl<T, E> Result<Result<T, E>, E> { | ||
| 1676 | 1676 | /// ``` |
| 1677 | 1677 | #[inline] |
| 1678 | 1678 | #[unstable(feature = "result_flattening", issue = "70142")] |
| 1679 | -pub fn flatten(self) -> Result<T, E> { | |
| 1680 | -self.and_then(convert::identity) | |
| 1679 | +#[rustc_const_unstable(feature = "result_flattening", issue = "70142")] | |
| 1680 | +pub const fn flatten(self) -> Result<T, E> { | |
| 1681 | +// FIXME(const-hack): could be written with `and_then` | |
| 1682 | +match self { | |
| 1683 | +Ok(inner) => inner, | |
| 1684 | +Err(e) => Err(e), | |
| 1685 | +} | |
| 1681 | 1686 | } |
| 1682 | 1687 | } |
| 1683 | 1688 |