aok/
lib.rs

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
pub use anyhow::*;

pub const OK: std::result::Result<(), Error> = std::result::Result::Ok(());

pub type Void = Result<()>;

#[macro_export]
macro_rules! err {
  ($($tt:tt)*) => {
    Err($crate::anyhow!($($tt)*))
  };
}

#[macro_export]
macro_rules! throw {
  ($msg:literal $(,)?) => {
    return Err($crate::anyhow!($msg));
  };
  ($err:expr $(,)?) => {
    return Err($crate::anyhow!($err));
  };
  ($fmt:expr, $($arg:tt)*) => {
    return Err($crate::anyhow!($fmt, $($arg)*));
  };
  ($err:expr ; $($arg:tt)*) => {{
    match $err {
      Err(err)=>{
        let mut msg = format!($($arg)*);
        msg.push_str(&format!(" : {}", err));
        return Err($crate::Error::msg(msg));
      }
      Ok(r) => r
    }
  }};
}