1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
#[macro_export] macro_rules! run { () => { vial::run!("0.0.0.0:7667") }; ($addr:expr) => {{ vial::run!($addr, self) }}; ($($module:ident),+) => {{ vial::run!("0.0.0.0:7667", $($module),+) }}; ($addr:expr, $($module:ident),+) => {{ vial::setup!(); let mut router = ::vial::Router::new(); $($module::vial_add_to_router(&mut router);)+ vial::run($addr, router) }}; } #[cfg(feature = "stateful")] #[macro_export] macro_rules! use_state { ($state:expr) => { vial::storage::init(); vial::storage::set($state); }; } #[macro_export] macro_rules! setup { () => { #[cfg(bundle_assets)] #[macro_export] macro_rules! vial_bundled_assets { () => { include!(concat!(env!("OUT_DIR"), "/bundle.rs")) }; } #[cfg(bundle_assets)] vial::include_assets!(); vial::asset_dir!(@option option_env!("ASSET_DIR")); }; } #[macro_export] macro_rules! include_assets { () => { unsafe { vial::BUNDLED_ASSETS = Some(vial_bundled_assets!()); } }; } #[macro_export] macro_rules! asset_dir { (@option $opt:expr) => { if let Some(dir) = $opt { ::vial::asset_dir!(dir); } }; ($dir:expr) => { unsafe { ::vial::ASSET_DIR = Some($dir); } }; } #[macro_export] macro_rules! bundle_assets { ($dir:expr) => { ::vial::bundle_assets($dir) }; } #[macro_export] macro_rules! routes { ( $($method:ident $path:expr => $body:expr;)* ) => { fn vial_check_method() { #![allow(non_snake_case)] fn GET() {} fn POST() {} fn PUT() {} fn DELETE() {} fn UPDATE() {} fn PATCH() {} $($method();)* } pub fn vial_add_to_router(router: &mut ::vial::Router) { $( router.insert(::vial::Method::$method, $path, |req| { use ::vial::Responder; #[cfg(not(feature = "stateful"))] let b: fn(::vial::Request) -> _ = $body; #[cfg(feature = "stateful")] let b: fn(::vial::State<_>) -> _ = $body; b(req.into()).to_response() }); )* } }; } macro_rules! error { ($msg:expr) => { std::io::Error::new(std::io::ErrorKind::Other, $msg) }; ($fmt:expr, $($args:expr),*) => { error!(format!($fmt, $($args),*)) }; }