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),
);

Run