pub trait Carrier { type Success; type Error; fn from_success(Self::Success) -> Self; fn from_error(Self::Error) -> Self; fn translate<T>(self) -> T where T: Carrier<Success=Self::Success, Error=Self::Error>; }
A trait for types which have success and error states and are meant to work with the question mark operator. When the ?
operator is used with a value, whether the value is in the success or error state is determined by calling translate
.
This trait is very experimental, it will probably be iterated on heavily before it is stabilised. Implementors should expect change. Users of ?
should not rely on any implementations of Carrier
other than Result
, i.e., you should not expect ?
to continue to work with Option
, etc.
type Success
The type of the value when computation succeeds.
type Error
The type of the value when computation errors out.
fn from_success(Self::Success) -> Self
Create a Carrier
from a success value.
fn from_error(Self::Error) -> Self
Create a Carrier
from an error value.
fn translate<T>(self) -> T where T: Carrier<Success=Self::Success, Error=Self::Error>
Translate this Carrier
to another implementation of Carrier
with the same associated types.
impl<U, V> Carrier for Result<U, V>
© 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.Carrier.html