Document 'IntoOutcome'.

This commit is contained in:
Sergio Benitez 2017-07-03 15:29:12 -07:00
parent 00df2846d7
commit a94dc9a270
1 changed files with 12 additions and 0 deletions

View File

@ -104,10 +104,20 @@ pub enum Outcome<S, E, F> {
/// Conversion trait from some type into an Outcome type.
pub trait IntoOutcome<S, E, F> {
/// The type to use when returning an `Outcome::Failure`.
type Failure: Sized;
/// The type to use when returning an `Outcome::Forward`.
type Forward: Sized;
/// Converts `self` into an `Outcome`. If `self` represents a success, an
/// `Outcome::Success` is returned. Otherwise, an `Outcome::Failure` is
/// returned with `failure` as the inner value.
fn into_outcome(self, failure: Self::Failure) -> Outcome<S, E, F>;
/// Converts `self` into an `Outcome`. If `self` represents a success, an
/// `Outcome::Success` is returned. Otherwise, an `Outcome::Forward` is
/// returned with `forward` as the inner value.
fn or_forward(self, forward: Self::Forward) -> Outcome<S, E, F>;
}
@ -115,10 +125,12 @@ impl<S, E, F> IntoOutcome<S, E, F> for Option<S> {
type Failure = E;
type Forward = F;
#[inline(always)]
fn into_outcome(self, val: E) -> Outcome<S, E, F> {
Failure(val)
}
#[inline(always)]
fn or_forward(self, val: F) -> Outcome<S, E, F> {
Forward(val)
}