On this page
Trait std::ops::FromResidual
pub trait FromResidual<R = <Self as Try>::Residual> {
// Required method
fn from_residual(residual: R) -> Self;
}
try_trait_v2
#84277)
Used to specify which residuals can be converted into which crate::ops::Try
types.
Every Try
type needs to be recreatable from its own associated Residual
type, but can also have additional FromResidual
implementations to support interconversion with other Try
types.
Required Methods
fn from_residual(residual: R) -> Self
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.)
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),
);
Object Safety
Implementors
impl<B, C> FromResidual for ControlFlow<B, C>
impl<T> FromResidual for Option<T>
impl<T> FromResidual<Yeet<()>> for Option<T>
impl<T, E, F> FromResidual<Result<Infallible, E>> for Result<T, F>
where
F: From<E>,
impl<T, E, F> FromResidual<Result<Infallible, E>> for Poll<Option<Result<T, F>>>
where
F: From<E>,
impl<T, E, F> FromResidual<Result<Infallible, E>> for Poll<Result<T, F>>
where
F: From<E>,
impl<T, E, F> FromResidual<Yeet<E>> for Result<T, F>
where
F: From<E>,
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/ops/trait.FromResidual.html