FromResidual in std::ops - Rust (original) (raw)
Trait FromResidual
pub trait FromResidual<R = <Self as Try>::Residual> {
// Required method
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). (The residual is not mandated to be identical when interconversion is involved.)
§Examples
#![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),
);This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.