Rollup merge of #137495 - madhav-madhusoodanan:feature-unstable-control-flow-into-value, r=jhpratt

Added into_value function to ControlFlow<T, T>
This commit is contained in:
Jacob Pratt 2025-02-24 02:11:36 -05:00 committed by GitHub
commit 3a1549ca8e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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.