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}