[−][src]Enum rocket::outcome::Outcome
An enum representing success (Success), failure (Failure), or
forwarding (Forward).
See the top level documentation for detailed information.
Variants
Contains the success value.
Contains the failure error value.
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]
self,
f: M
) -> Outcome<T, E, F>
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]
self,
f: M
) -> Outcome<S, T, F>
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]
self,
f: M
) -> Outcome<S, E, T>
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);
impl<'r> Outcome<Response<'r>, Status, Data>[src]
pub fn from<T: Responder<'r>>(req: &Request, responder: T) -> Outcome<'r>[src]
Return the Outcome of response to req from responder.
If the responder returns Ok, an outcome of Success is
returned with the response. If the responder returns Err, an
outcome of Failure is returned with the status code.
Example
use rocket::{Request, Data}; use rocket::handler::Outcome; fn str_responder(req: &Request, _: Data) -> Outcome<'static> { Outcome::from(req, "Hello, world!") }
pub fn failure(code: Status) -> Outcome<'static>[src]
Return an Outcome of Failure with the status code code. This is
equivalent to Outcome::Failure(code).
This method exists to be used during manual routing where
rocket::handler::Outcome is imported instead of rocket::Outcome.
Example
use rocket::{Request, Data}; use rocket::handler::Outcome; use rocket::http::Status; fn bad_req_route(_: &Request, _: Data) -> Outcome<'static> { Outcome::failure(Status::BadRequest) }
pub fn forward(data: Data) -> Outcome<'static>[src]
Return an Outcome of Forward with the data data. This is
equivalent to Outcome::Forward(data).
This method exists to be used during manual routing where
rocket::handler::Outcome is imported instead of rocket::Outcome.
Example
use rocket::{Request, Data}; use rocket::handler::Outcome; fn always_forward(_: &Request, data: Data) -> Outcome<'static> { Outcome::forward(data) }
Trait Implementations
impl<S: Clone, E: Clone, F: Clone> Clone for Outcome<S, E, F>[src]
impl<S: Copy, E: Copy, F: Copy> Copy 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: Eq, E: Eq, F: Eq> Eq for Outcome<S, E, F>[src]
impl<S: Hash, E: Hash, F: Hash> Hash for Outcome<S, E, F>[src]
fn hash<__H: Hasher>(&self, state: &mut __H)[src]
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher, 1.3.0[src]
H: Hasher,
impl<S: Ord, E: Ord, F: Ord> Ord for Outcome<S, E, F>[src]
fn cmp(&self, other: &Outcome<S, E, F>) -> Ordering[src]
#[must_use]fn max(self, other: Self) -> Self1.21.0[src]
#[must_use]fn min(self, other: Self) -> Self1.21.0[src]
#[must_use]fn clamp(self, min: Self, max: Self) -> Self[src]
impl<S: PartialEq, E: PartialEq, F: PartialEq> PartialEq<Outcome<S, E, F>> for Outcome<S, E, F>[src]
fn eq(&self, other: &Outcome<S, E, F>) -> bool[src]
fn ne(&self, other: &Outcome<S, E, F>) -> bool[src]
impl<S: PartialOrd, E: PartialOrd, F: PartialOrd> PartialOrd<Outcome<S, E, F>> for Outcome<S, E, F>[src]
fn partial_cmp(&self, other: &Outcome<S, E, F>) -> Option<Ordering>[src]
fn lt(&self, other: &Outcome<S, E, F>) -> bool[src]
fn le(&self, other: &Outcome<S, E, F>) -> bool[src]
fn gt(&self, other: &Outcome<S, E, F>) -> bool[src]
fn ge(&self, other: &Outcome<S, E, F>) -> bool[src]
impl<S, E, F> StructuralEq for Outcome<S, E, F>[src]
impl<S, E, F> StructuralPartialEq for Outcome<S, E, F>[src]
impl<S, E, F> Try for Outcome<S, E, F>[src]
type Ok = S
try_trait)The type of this value when viewed as successful.
type Error = Result<F, E>
try_trait)The type of this value when viewed as failed.
fn into_result(self) -> Result<Self::Ok, Self::Error>[src]
fn from_error(val: Self::Error) -> Self[src]
fn from_ok(val: Self::Ok) -> Self[src]
Auto Trait Implementations
impl<S, E, F> RefUnwindSafe for Outcome<S, E, F> where
E: RefUnwindSafe,
F: RefUnwindSafe,
S: RefUnwindSafe,
E: RefUnwindSafe,
F: RefUnwindSafe,
S: RefUnwindSafe,
impl<S, E, F> Send for Outcome<S, E, F> where
E: Send,
F: Send,
S: Send,
E: Send,
F: Send,
S: Send,
impl<S, E, F> Sync for Outcome<S, E, F> where
E: Sync,
F: Sync,
S: Sync,
E: Sync,
F: Sync,
S: Sync,
impl<S, E, F> Unpin for Outcome<S, E, F> where
E: Unpin,
F: Unpin,
S: Unpin,
E: Unpin,
F: Unpin,
S: Unpin,
impl<S, E, F> UnwindSafe for Outcome<S, E, F> where
E: UnwindSafe,
F: UnwindSafe,
S: UnwindSafe,
E: UnwindSafe,
F: UnwindSafe,
S: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T, I> AsResult<T, I> for T where
I: Input, [src]
I: Input,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T[src]
impl<Q, K> Equivalent<K> for Q where
K: Borrow<Q> + ?Sized,
Q: Eq + ?Sized, [src]
K: Borrow<Q> + ?Sized,
Q: Eq + ?Sized,
fn equivalent(&self, key: &K) -> bool[src]
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T> IntoCollection<T> for T[src]
fn into_collection<A>(self) -> SmallVec<A> where
A: Array<Item = T>, [src]
A: Array<Item = T>,
fn mapped<U, F, A>(self, f: F) -> SmallVec<A> where
A: Array<Item = U>,
F: FnMut(T) -> U, [src]
A: Array<Item = U>,
F: FnMut(T) -> U,
impl<T> ToOwned for T where
T: Clone, [src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T[src]
fn clone_into(&self, target: &mut T)[src]
impl<T> ToString for T where
T: Display + ?Sized, [src]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]
impl<T> Typeable for T where
T: Any, [src]
T: Any,