xerr/
lib.rs

1pub use anyhow;
2pub use log as tracing;
3
4#[macro_export]
5macro_rules! ignore {
6  ($expr:expr) => {{
7    let r = (async move || Ok::<_, $crate::anyhow::Error>($expr))();
8    if let Err(err) = r.await {
9      $crate::tracing::error!("{}", err);
10    }
11  }};
12}
13
14#[macro_export]
15macro_rules! ok_or {
16  ($expr:expr,$default:expr) => {{
17    let result = (move || Ok::<_, $crate::anyhow::Error>($expr))();
18    match result {
19      Ok(r) => r,
20      Err(err) => {
21        $crate::tracing::error!("{}", err);
22        $default
23      }
24    }
25  }};
26}
27
28#[macro_export]
29macro_rules! log {
30  ($result:expr) => {{
31    if let Err(err) = $result {
32      $crate::tracing::error!("{}", err);
33    }
34  }};
35  ($($result:expr),+$(,)?) => {{
36    $(
37      $crate::tracing!($result);
38    )+
39  }}
40}
41
42#[macro_export]
43macro_rules! is_ok {
44  ($result:expr) => {{
45    match $result {
46      Ok(_) => true,
47      Err(err) => {
48        $crate::tracing::error!("{}", err);
49        false
50      }
51    }
52  }};
53}
54
55#[macro_export]
56macro_rules! ok {
57  ($result:expr) => {{
58    match $result {
59      Ok(r) => Ok(r),
60      Err(err) => {
61        $crate::tracing::error!("{}", err);
62        Err(err)
63      }
64    }
65  }};
66}