may_fail! macro

Returns an error template if an Option is None, else runs the given block
This commit is contained in:
Bat
2018-06-18 18:28:28 +01:00
parent 7e3cdec0b6
commit 51571d6320
5 changed files with 90 additions and 57 deletions
+26
View File
@@ -1,6 +1,32 @@
use rocket::response::NamedFile;
use std::path::{Path, PathBuf};
macro_rules! may_fail {
($expr:expr, $template:expr, $msg:expr, | $res:ident | $block:block) => {
{
let res = $expr;
if res.is_some() {
let $res = res.unwrap();
$block
} else {
Template::render(concat!("errors/", stringify!($template)), json!({
"error_message": $msg
}))
}
}
};
($expr:expr, $msg:expr, | $res:ident | $block:block) => {
may_fail!($expr, "404", $msg, |$res| {
$block
})
};
($expr:expr, | $res:ident | $block:block) => {
may_fail!($expr, "", |$res| {
$block
})
};
}
pub mod blogs;
pub mod comments;
pub mod errors;