1#[macro_export]
2macro_rules! unwrap_or_return {
3 ($res: expr, $code: expr) => {
4 match $res {
5 Some(v) => v,
6 None => return $code,
7 }
8 };
9}
10
11#[macro_export]
12macro_rules! unwrap_or_return_with {
13 ($res: expr, $func:expr) => {
14 match $res {
15 Some(v) => v,
16 None => return $func(),
17 }
18 };
19}
20
21#[macro_export]
22macro_rules! unwrap_or_else {
23 ($res: expr, $else_block:block) => {
24 match $res {
25 Some(v) => v,
26 None => $else_block,
27 }
28 };
29}
30
31#[macro_export]
32macro_rules! ok_or_return_with {
33 ($res:expr, $func:expr) => {
34 match $res {
35 Ok(v) => v,
36 Err(e) => return $func(e),
37 }
38 };
39}
40
41#[macro_export]
42macro_rules! unwrap_or_noop {
43 ($res: expr) => {
44 match $res {
45 Some(v) => v,
46 None => return,
47 }
48 };
49}
50
51#[macro_export]
52macro_rules! read_lock_or_else {
53 ($lock:expr, $else_block:block) => {
54 match $lock.try_read_for(std::time::Duration::from_secs(5)) {
55 Some(data) => data,
56 None => $else_block,
57 }
58 };
59}
60
61#[macro_export]
62macro_rules! read_lock_or_return {
63 ($tag: expr, $lock:expr, $code: expr) => {
64 match $lock.try_read_for(std::time::Duration::from_secs(5)) {
65 Some(data) => data,
66 None => {
67 $crate::log_e!($tag, "Failed to acquire read lock");
68 return $code;
69 }
70 }
71 };
72}
73
74#[macro_export]
75macro_rules! write_lock_or_else {
76 ($lock:expr, $else_block:block) => {
77 match $lock.try_write_for(std::time::Duration::from_secs(5)) {
78 Some(data) => data,
79 None => $else_block,
80 }
81 };
82}
83
84#[macro_export]
85macro_rules! write_lock_or_noop {
86 ($tag: expr, $lock:expr) => {
87 match $lock.try_write_for(std::time::Duration::from_secs(5)) {
88 Some(data) => data,
89 None => {
90 $crate::log_e!($tag, "Failed to acquire write lock");
91 return;
92 }
93 }
94 };
95}
96
97#[macro_export]
98macro_rules! write_lock_or_return {
99 ($tag: expr, $lock:expr, $code: expr) => {
100 match $lock.try_write_for(std::time::Duration::from_secs(5)) {
101 Some(data) => data,
102 None => {
103 $crate::log_e!($tag, "Failed to acquire write lock");
104 return $code;
105 }
106 }
107 };
108}
109
110#[macro_export]
111macro_rules! serialize_if_not_none {
112 ($state: expr, $field_name: expr, $value: expr) => {
113 if let Some(v) = $value {
114 $state.serialize_field($field_name, v)?
115 }
116 };
117}