FromResidual in std::ops - Rust (original) (raw)
pub trait FromResidual<R = <Self as Try>::Residual> {
fn from_residual(residual: R) -> Self;
}
🔬 This is a nightly-only experimental API. (try_trait_v2
#84277)
Expand description
Used to specify which residuals can be converted into which crate::ops::Try types.
Every Try
type needs to be recreatable from its own associatedResidual
type, but can also have additional FromResidual
implementations to support interconversion with other Try
types.
🔬 This is a nightly-only experimental API. (try_trait_v2
#84277)
Constructs the type from a compatible Residual
type.
This should be implemented consistently with the branch
method such that applying the ?
operator will get back an equivalent residual:FromResidual::from_residual(r).branch() --> ControlFlow::Break(r)
. (It must not be an identical residual when interconversion is involved.)
#![feature(try_trait_v2)]
use std::ops::{ControlFlow, FromResidual};
assert_eq!(Result::<String, i64>::from_residual(Err(3_u8)), Err(3));
assert_eq!(Option::<String>::from_residual(None), None);
assert_eq!(
ControlFlow::<_, String>::from_residual(ControlFlow::Break(5)),
ControlFlow::Break(5),
);