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_noop {
76 ($tag: expr, $lock:expr) => {
77 match $lock.try_write_for(std::time::Duration::from_secs(5)) {
78 Some(data) => data,
79 None => {
80 $crate::log_e!($tag, "Failed to acquire write lock");
81 return;
82 }
83 }
84 };
85}
86
87#[macro_export]
88macro_rules! write_lock_or_return {
89 ($tag: expr, $lock:expr, $code: expr) => {
90 match $lock.try_write_for(std::time::Duration::from_secs(5)) {
91 Some(data) => data,
92 None => {
93 $crate::log_e!($tag, "Failed to acquire write lock");
94 return $code;
95 }
96 }
97 };
98}
99
100#[macro_export]
101macro_rules! serialize_if_not_none {
102 ($state: expr, $field_name: expr, $value: expr) => {
103 if let Some(v) = $value {
104 $state.serialize_field($field_name, v)?
105 }
106 };
107}