diff options
author | metamuffin <metamuffin@disroot.org> | 2023-02-13 21:02:09 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-02-13 21:02:09 +0100 |
commit | 9cefa70c3594445c3af6428be982b8b5b5883a42 (patch) | |
tree | cebfeb0026348d83666674aaece3ae22b13ba5dc /src/error.rs | |
parent | ad483c540b24b4adc1cdab5bdf62772ba19b615a (diff) | |
download | metamuffin-website-9cefa70c3594445c3af6428be982b8b5b5883a42.tar metamuffin-website-9cefa70c3594445c3af6428be982b8b5b5883a42.tar.bz2 metamuffin-website-9cefa70c3594445c3af6428be982b8b5b5883a42.tar.zst |
include blog (2)
Diffstat (limited to 'src/error.rs')
-rw-r--r-- | src/error.rs | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/error.rs b/src/error.rs new file mode 100644 index 0000000..1fe89da --- /dev/null +++ b/src/error.rs @@ -0,0 +1,59 @@ +use std::fmt::Display; + +use crate::layout::{DynScaffold, Scaffold}; +use rocket::{ + catch, + http::Status, + response::{self, Responder}, + Request, +}; + +#[catch(default)] +pub fn r_catch<'a>(status: Status, _request: &Request) -> DynScaffold<'a> { + Scaffold { + title: "Error".to_string(), + content: markup::new! { + h2 { "Error" } + p { @format!("{status}") } + }, + } +} + +pub type MyResult<T> = Result<T, MyError>; + +#[derive(Debug)] +pub struct MyError(pub anyhow::Error); + +impl<'r> Responder<'r, 'static> for MyError { + fn respond_to(self, req: &'r Request<'_>) -> response::Result<'static> { + Scaffold { + title: "Error".to_string(), + content: markup::new! { + h2 { "An error occured. Nobody is sorry"} + pre.error { @format!("{:?}", self.0) } + }, + } + .respond_to(req) + } +} + +impl Display for MyError { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + self.0.fmt(f) + } +} +// impl<T: std::error::Error> From<T> for MyError { +// fn from(err: T) -> MyError { +// MyError(anyhow::anyhow!("{err}")) +// } +// } +impl From<std::io::Error> for MyError { + fn from(err: std::io::Error) -> MyError { + MyError(anyhow::anyhow!("{err}")) + } +} +impl From<anyhow::Error> for MyError { + fn from(err: anyhow::Error) -> MyError { + MyError(err) + } +} |