[][src]Enum rocket::Outcome

#[must_use]
pub enum Outcome<S, E, F> { Success(S), Failure(E), Forward(F), }

An enum representing success (Success), failure (Failure), or forwarding (Forward).

See the top level documentation for detailed information.

Variants

Success(S)

Contains the success value.

Failure(E)

Contains the failure error value.

Forward(F)

Contains the value to forward on.

Methods

impl<S, E, F> Outcome<S, E, F>[src]

pub fn unwrap(self) -> S[src]

Unwraps the Outcome, yielding the contents of a Success.

Panics

Panics if the value is not Success.

Examples

let x: Outcome<i32, &str, usize> = Success(10);
assert_eq!(x.unwrap(), 10);

pub fn expect(self, message: &str) -> S[src]

Unwraps the Outcome, yielding the contents of a Success.

Panics

If the value is not Success, panics with the given message.

Examples

let x: Outcome<i32, &str, usize> = Success(10);
assert_eq!(x.expect("success value"), 10);

pub fn is_success(&self) -> bool[src]

Return true if this Outcome is a Success.

Examples

let x: Outcome<i32, &str, usize> = Success(10);
assert_eq!(x.is_success(), true);

let x: Outcome<i32, &str, usize> = Failure("Hi! I'm an error.");
assert_eq!(x.is_success(), false);

let x: Outcome<i32, &str, usize> = Forward(25);
assert_eq!(x.is_success(), false);

pub fn is_failure(&self) -> bool[src]

Return true if this Outcome is a Failure.

Examples

let x: Outcome<i32, &str, usize> = Success(10);
assert_eq!(x.is_failure(), false);

let x: Outcome<i32, &str, usize> = Failure("Hi! I'm an error.");
assert_eq!(x.is_failure(), true);

let x: Outcome<i32, &str, usize> = Forward(25);
assert_eq!(x.is_failure(), false);

pub fn is_forward(&self) -> bool[src]

Return true if this Outcome is a Forward.

Examples

let x: Outcome<i32, &str, usize> = Success(10);
assert_eq!(x.is_forward(), false);

let x: Outcome<i32, &str, usize> = Failure("Hi! I'm an error.");
assert_eq!(x.is_forward(), false);

let x: Outcome<i32, &str, usize> = Forward(25);
assert_eq!(x.is_forward(), true);

pub fn succeeded(self) -> Option<S>[src]

Converts from Outcome<S, E, F> to Option<S>.

Returns the Some of the Success if this is a Success, otherwise returns None. self is consumed, and all other values are discarded.

let x: Outcome<i32, &str, usize> = Success(10);
assert_eq!(x.succeeded(), Some(10));

let x: Outcome<i32, &str, usize> = Failure("Hi! I'm an error.");
assert_eq!(x.succeeded(), None);

let x: Outcome<i32, &str, usize> = Forward(25);
assert_eq!(x.succeeded(), None);

pub fn failed(self) -> Option<E>[src]

Converts from Outcome<S, E, F> to Option<E>.

Returns the Some of the Failure if this is a Failure, otherwise returns None. self is consumed, and all other values are discarded.

let x: Outcome<i32, &str, usize> = Success(10);
assert_eq!(x.failed(), None);

let x: Outcome<i32, &str, usize> = Failure("Hi! I'm an error.");
assert_eq!(x.failed(), Some("Hi! I'm an error."));

let x: Outcome<i32, &str, usize> = Forward(25);
assert_eq!(x.failed(), None);

pub fn forwarded(self) -> Option<F>[src]

Converts from Outcome<S, E, F> to Option<F>.

Returns the Some of the Forward if this is a Forward, otherwise returns None. self is consumed, and all other values are discarded.

let x: Outcome<i32, &str, usize> = Success(10);
assert_eq!(x.forwarded(), None);

let x: Outcome<i32, &str, usize> = Failure("Hi! I'm an error.");
assert_eq!(x.forwarded(), None);

let x: Outcome<i32, &str, usize> = Forward(25);
assert_eq!(x.forwarded(), Some(25));

pub fn success_or<T>(self, value: T) -> Result<S, T>[src]

Converts from Outcome<S, E, F> to Result<S, T> for a given T.

Returns Ok with the Success value if this is a Success, otherwise returns an Err with the provided value. self is consumed, and all other values are discarded.

let x: Outcome<i32, &str, usize> = Success(10);
assert_eq!(x.success_or(false), Ok(10));

let x: Outcome<i32, &str, usize> = Failure("Hi! I'm an error.");
assert_eq!(x.success_or(false), Err(false));

let x: Outcome<i32, &str, usize> = Forward(25);
assert_eq!(x.success_or("whoops"), Err("whoops"));

pub fn success_or_else<T, V: FnOnce() -> T>(self, f: V) -> Result<S, T>[src]

Converts from Outcome<S, E, F> to Result<S, T> for a given T produced from a supplied function or closure.

Returns Ok with the Success value if this is a Success, otherwise returns an Err with the result of calling f. self is consumed, and all other values are discarded.

let x: Outcome<i32, &str, usize> = Success(10);
assert_eq!(x.success_or_else(|| false), Ok(10));

let x: Outcome<i32, &str, usize> = Failure("Hi! I'm an error.");
assert_eq!(x.success_or_else(|| false), Err(false));

let x: Outcome<i32, &str, usize> = Forward(25);
assert_eq!(x.success_or_else(|| "whoops"), Err("whoops"));

pub fn as_ref(&self) -> Outcome<&S, &E, &F>[src]

Converts from Outcome<S, E, F> to Outcome<&S, &E, &F>.

let x: Outcome<i32, &str, usize> = Success(10);
assert_eq!(x.as_ref(), Success(&10));

let x: Outcome<i32, &str, usize> = Failure("Hi! I'm an error.");
assert_eq!(x.as_ref(), Failure(&"Hi! I'm an error."));

pub fn map<T, M: FnOnce(S) -> T>(self, f: M) -> Outcome<T, E, F>[src]

Maps an Outcome<S, E, F> to an Outcome<T, E, F> by applying the function f to the value of type S in self if self is an Outcome::Success.

let x: Outcome<i32, &str, usize> = Success(10);

let mapped = x.map(|v| if v == 10 { "10" } else { "not 10" });
assert_eq!(mapped, Success("10"));

pub fn map_failure<T, M: FnOnce(E) -> T>(self, f: M) -> Outcome<S, T, F>[src]

Maps an Outcome<S, E, F> to an Outcome<S, T, F> by applying the function f to the value of type E in self if self is an Outcome::Failure.

let x: Outcome<i32, &str, usize> = Failure("hi");

let mapped = x.map_failure(|v| if v == "hi" { 10 } else { 0 });
assert_eq!(mapped, Failure(10));

pub fn map_forward<T, M: FnOnce(F) -> T>(self, f: M) -> Outcome<S, E, T>[src]

Maps an Outcome<S, E, F> to an Outcome<S, E, T> by applying the function f to the value of type F in self if self is an Outcome::Forward.

let x: Outcome<i32, &str, usize> = Forward(5);

let mapped = x.map_forward(|v| if v == 5 { "a" } else { "b" });
assert_eq!(mapped, Forward("a"));

pub fn and_then<T, M: FnOnce(S) -> Outcome<T, E, F>>(
    self,
    f: M
) -> Outcome<T, E, F>
[src]

Maps an Outcome<S, E, F> to an Outcome<T, E, F> by applying the function f to the value of type S in self if self is an Outcome::Success.

Examples

let x: Outcome<i32, &str, bool> = Success(10);

let mapped = x.and_then(|v| match v {
   10 => Success("10"),
   1 => Forward(false),
   _ => Failure("30")
});

assert_eq!(mapped, Success("10"));

pub fn failure_then<T, M: FnOnce(E) -> Outcome<S, T, F>>(
    self,
    f: M
) -> Outcome<S, T, F>
[src]

Maps an Outcome<S, E, F> to an Outcome<S, T, F> by applying the function f to the value of type E in self if self is an Outcome::Failure.

Examples

let x: Outcome<i32, &str, bool> = Failure("hi");

let mapped = x.failure_then(|v| match v {
   "hi" => Failure(10),
   "test" => Forward(false),
   _ => Success(10)
});

assert_eq!(mapped, Failure(10));

pub fn forward_then<T, M: FnOnce(F) -> Outcome<S, E, T>>(
    self,
    f: M
) -> Outcome<S, E, T>
[src]

Maps an Outcome<S, E, F> to an Outcome<S, E, T> by applying the function f to the value of type F in self if self is an Outcome::Forward.

Examples

let x: Outcome<i32, &str, Option<bool>> = Forward(Some(false));

let mapped = x.forward_then(|v| match v {
   Some(true) => Success(10),
   Some(false) => Forward(20),
   None => Failure("10")
});

assert_eq!(mapped, Forward(20));

pub fn as_mut(&mut self) -> Outcome<&mut S, &mut E, &mut F>[src]

Converts from Outcome<S, E, F> to Outcome<&mut S, &mut E, &mut F>.

let mut x: Outcome<i32, &str, usize> = Success(10);
if let Success(val) = x.as_mut() {
    *val = 20;
}

assert_eq!(x.unwrap(), 20);

Trait Implementations

impl<S: PartialOrd, E: PartialOrd, F: PartialOrd> PartialOrd<Outcome<S, E, F>> for Outcome<S, E, F>[src]

impl<S: Copy, E: Copy, F: Copy> Copy for Outcome<S, E, F>[src]

impl<S: PartialEq, E: PartialEq, F: PartialEq> PartialEq<Outcome<S, E, F>> for Outcome<S, E, F>[src]

impl<S: Clone, E: Clone, F: Clone> Clone for Outcome<S, E, F>[src]

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl<S: Ord, E: Ord, F: Ord> Ord for Outcome<S, E, F>[src]

fn max(self, other: Self) -> Self1.21.0[src]

Compares and returns the maximum of two values. Read more

fn min(self, other: Self) -> Self1.21.0[src]

Compares and returns the minimum of two values. Read more

fn clamp(self, min: Self, max: Self) -> Self[src]

🔬 This is a nightly-only experimental API. (clamp)

Restrict a value to a certain interval. Read more

impl<S: Eq, E: Eq, F: Eq> Eq for Outcome<S, E, F>[src]

impl<S, E, F> Debug for Outcome<S, E, F>[src]

impl<S, E, F> Display for Outcome<S, E, F>[src]

impl<S: Hash, E: Hash, F: Hash> Hash for Outcome<S, E, F>[src]

fn hash_slice<H>(data: &[Self], state: &mut H) where
    H: Hasher
1.3.0[src]

Feeds a slice of this type into the given [Hasher]. Read more

impl<S, E, F> Try for Outcome<S, E, F>[src]

type Ok = S

🔬 This is a nightly-only experimental API. (try_trait)

The type of this value when viewed as successful.

type Error = Result<F, E>

🔬 This is a nightly-only experimental API. (try_trait)

The type of this value when viewed as failed.

Auto Trait Implementations

impl<S, E, F> Send for Outcome<S, E, F> where
    E: Send,
    F: Send,
    S: Send

impl<S, E, F> Sync for Outcome<S, E, F> where
    E: Sync,
    F: Sync,
    S: Sync

Blanket Implementations

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> From<T> for T[src]

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Typeable for T where
    T: Any

fn get_type(&self) -> TypeId

Get the TypeId of this object.

impl<T> IntoCollection<T> for T

impl<Q, K> Equivalent<K> for Q where
    K: Borrow<Q> + ?Sized,
    Q: Eq + ?Sized
[src]

impl<T, I> AsResult<T, I> for T where
    I: Input,