Struct rocket::response::Debug [−][src]
pub struct Debug<E>(pub E);
Expand description
Debug prints the internal value before forwarding to the 500 error catcher.
This value exists primarily to allow handler return types that would not
otherwise implement Responder
. It is typically used in conjunction with
Result<T, E>
where E
implements Debug
but not Responder
.
Note that because of it’s common use as an error value, std::io::Error
does implement Responder
. As a result, a std::io::Result<T>
can be
returned directly without the need for Debug
:
use std::io; use rocket::fs::NamedFile; #[get("/")] async fn index() -> io::Result<NamedFile> { NamedFile::open("index.html").await }
Example
Because of the generic From<E>
implementation for Debug<E>
, conversions
from Result<T, E>
to Result<T, Debug<E>>
through ?
occur
automatically:
use std::string::FromUtf8Error; use rocket::response::Debug; #[get("/")] fn rand_str() -> Result<String, Debug<FromUtf8Error>> { let bytes: Vec<u8> = random_bytes(); Ok(String::from_utf8(bytes)?) }
It is also possible to map the error directly to Debug
via
Result::map_err()
:
use std::string::FromUtf8Error; use rocket::response::Debug; #[get("/")] fn rand_str() -> Result<String, Debug<FromUtf8Error>> { let bytes: Vec<u8> = random_bytes(); String::from_utf8(bytes).map_err(Debug) }
Trait Implementations
Returns Ok
if a Response
could be generated successfully. Otherwise,
returns an Err
with a failing Status
. Read more
Auto Trait Implementations
impl<E> RefUnwindSafe for Debug<E> where
E: RefUnwindSafe,
impl<E> UnwindSafe for Debug<E> where
E: UnwindSafe,