diff options
| author | Madhav Madhusoodanan <f20200049@pilani.bits-pilani.ac.in> | 2025-02-24 00:36:25 +0530 |
|---|---|---|
| committer | Madhav Madhusoodanan <f20200049@pilani.bits-pilani.ac.in> | 2025-02-24 07:36:27 +0530 |
| commit | f49b6c6cd58aa61c804dcb22cc013c728f8924af (patch) | |
| tree | d1490c1fe8beb5da79c6601dd15ba7af872e4c10 /library/core | |
| parent | b522e7c5ea8334fbccb9dd7f9b33759304743fd0 (diff) | |
| download | rust-f49b6c6cd58aa61c804dcb22cc013c728f8924af.tar.gz rust-f49b6c6cd58aa61c804dcb22cc013c728f8924af.zip | |
Added into_value const function to ControlFlow<T, T>
Fixed issue with usage of generics and moved feature gate to crate root Removed const tag Fixed alphabetical ordering of feature gate, added same to doctest Removed crate-level declaration of feature gate control_flow_into_value Used const_precise_live_drops to constify into_value without issue of a drop
Diffstat (limited to 'library/core')
| -rw-r--r-- | library/core/src/ops/control_flow.rs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/library/core/src/ops/control_flow.rs b/library/core/src/ops/control_flow.rs index c8fcee5c140..8993e14fcd3 100644 --- a/library/core/src/ops/control_flow.rs +++ b/library/core/src/ops/control_flow.rs @@ -229,6 +229,27 @@ impl<B, C> ControlFlow<B, C> { } } +impl<T> ControlFlow<T, T> { + /// Extracts the value `T` that is wrapped by `ControlFlow<T, T>`. + /// + /// # Examples + /// + /// ``` + /// #![feature(control_flow_into_value)] + /// use std::ops::ControlFlow; + /// + /// assert_eq!(ControlFlow::<i32, i32>::Break(1024).into_value(), 1024); + /// assert_eq!(ControlFlow::<i32, i32>::Continue(512).into_value(), 512); + /// ``` + #[unstable(feature = "control_flow_into_value", issue = "137461")] + #[rustc_allow_const_fn_unstable(const_precise_live_drops)] + pub const fn into_value(self) -> T { + match self { + ControlFlow::Continue(x) | ControlFlow::Break(x) => x, + } + } +} + /// These are used only as part of implementing the iterator adapters. /// They have mediocre names and non-obvious semantics, so aren't /// currently on a path to potential stabilization. |
