Enum rocket::outcome::Outcome [−][src]
#[must_use] pub enum Outcome<S, E, F> { Success(S), Failure(E), Forward(F), }
Expand description
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.
Implementations
impl<S, E, F> Outcome<S, E, F>
[src]
impl<S, E, F> Outcome<S, E, F>
[src]pub fn is_success(&self) -> bool
[src]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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));
impl<'r> Outcome<Response<'r>, Status, Data>
[src]
impl<'r> Outcome<Response<'r>, Status, Data>
[src]pub fn from<T: Responder<'r>>(req: &Request<'_>, responder: T) -> Outcome<'r>
[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 from_or_forward<T>(
req: &Request<'_>,
data: Data,
responder: T
) -> Outcome<'r> where
T: Responder<'r>,
[src]
pub fn from_or_forward<T>(
req: &Request<'_>,
data: Data,
responder: T
) -> Outcome<'r> where
T: Responder<'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 Forward
is returned.
Example
use rocket::{Request, Data}; use rocket::handler::Outcome; fn str_responder(req: &Request, data: Data) -> Outcome<'static> { Outcome::from_or_forward(req, data, "Hello, world!") }
pub fn failure(code: Status) -> Outcome<'static>
[src]
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]
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, X, E: From<X>, Y, F: From<Y>> FromResidual<Outcome<!, X, Y>> for Outcome<S, E, F>
[src]
impl<S, X, E: From<X>, Y, F: From<Y>> FromResidual<Outcome<!, X, Y>> for Outcome<S, E, F>
[src]fn from_residual(r: Outcome<!, X, Y>) -> Self
[src]
fn from_residual(r: Outcome<!, X, Y>) -> Self
[src]try_trait_v2
)Constructs the type from a compatible Residual
type. Read more
impl<Y, S, E: From<Y>, F> FromResidual<Result<Infallible, Y>> for Outcome<S, E, F>
[src]
impl<Y, S, E: From<Y>, F> FromResidual<Result<Infallible, Y>> for Outcome<S, E, F>
[src]fn from_residual(r: Result<Infallible, Y>) -> Self
[src]
fn from_residual(r: Result<Infallible, Y>) -> Self
[src]try_trait_v2
)Constructs the type from a compatible Residual
type. Read more
impl<S: Ord, E: Ord, F: Ord> Ord for Outcome<S, E, F>
[src]
impl<S: Ord, E: Ord, F: Ord> Ord 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: PartialEq, E: PartialEq, F: PartialEq> PartialEq<Outcome<S, E, F>> for Outcome<S, E, F>
[src]impl<S: PartialOrd, E: PartialOrd, F: PartialOrd> PartialOrd<Outcome<S, E, F>> for Outcome<S, E, F>
[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 partial_cmp(&self, other: &Outcome<S, E, F>) -> Option<Ordering>
[src]This method returns an ordering between self
and other
values if one exists. Read more
#[must_use]fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn lt(&self, other: &Rhs) -> bool
1.0.0[src]This method tests less than (for self
and other
) and is used by the <
operator. Read more
#[must_use]fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn le(&self, other: &Rhs) -> bool
1.0.0[src]This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
impl<A, B, C> Try for Outcome<A, B, C>
[src]
impl<A, B, C> Try for Outcome<A, B, C>
[src]type Output = A
type Output = A
try_trait_v2
)The type of the value produced by ?
when not short-circuiting.
type Residual = Outcome<!, B, C>
type Residual = Outcome<!, B, C>
try_trait_v2
)The type of the value passed to FromResidual::from_residual
as part of ?
when short-circuiting. Read more
fn from_output(x: Self::Output) -> Self
[src]
fn from_output(x: Self::Output) -> Self
[src]try_trait_v2
)Constructs the type from its Output
type. Read more
fn branch(self) -> ControlFlow<Self::Residual, Self::Output>
[src]
fn branch(self) -> ControlFlow<Self::Residual, Self::Output>
[src]try_trait_v2
)Used in ?
to decide whether the operator should produce a value
(because this returned ControlFlow::Continue
)
or propagate a value back to the caller
(because this returned ControlFlow::Break
). Read more
impl<S: Copy, E: Copy, F: Copy> Copy for Outcome<S, E, F>
[src]
impl<S: Eq, E: Eq, F: Eq> Eq for Outcome<S, E, F>
[src]
impl<S, E, F> StructuralEq for Outcome<S, E, F>
[src]
impl<S, E, F> StructuralPartialEq for Outcome<S, E, F>
[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> BorrowMut<T> for T where
T: ?Sized,
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]pub fn borrow_mut(&mut self) -> &mut T
[src]
pub fn borrow_mut(&mut self) -> &mut T
[src]Mutably borrows from an owned value. Read more
impl<Q, K> Equivalent<K> for Q where
K: Borrow<Q> + ?Sized,
Q: Eq + ?Sized,
[src]
impl<Q, K> Equivalent<K> for Q where
K: Borrow<Q> + ?Sized,
Q: Eq + ?Sized,
[src]pub fn equivalent(&self, key: &K) -> bool
[src]
pub fn equivalent(&self, key: &K) -> bool
[src]Compare self to key
and return true
if they are equal.
impl<T> IntoCollection<T> for T
impl<T> IntoCollection<T> for T
pub fn into_collection<A>(self) -> SmallVec<A> where
A: Array<Item = T>,
pub fn into_collection<A>(self) -> SmallVec<A> where
A: Array<Item = T>,
Converts self
into a collection.
pub fn mapped<U, F, A>(self, f: F) -> SmallVec<A> where
F: FnMut(T) -> U,
A: Array<Item = U>,
F: FnMut(T) -> U,
A: Array<Item = U>,
impl<T> Same<T> for T
impl<T> Same<T> for T
type Output = T
type Output = T
Should always be Self
impl<T> ToOwned for T where
T: Clone,
[src]
impl<T> ToOwned for T where
T: Clone,
[src]type Owned = T
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn to_owned(&self) -> T
[src]Creates owned data from borrowed data, usually by cloning. Read more
pub fn clone_into(&self, target: &mut T)
[src]
pub fn clone_into(&self, target: &mut T)
[src]🔬 This is a nightly-only experimental API. (toowned_clone_into
)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,