statsig_rust/
macros.rs

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.read() {
55            Ok(data) => data,
56            Err(_) => $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.read() {
65            Ok(data) => data,
66            Err(e) => {
67                log_e!($tag, "Failed to read store: {}", e.to_string());
68                return $code;
69            }
70        }
71    };
72}
73
74#[macro_export]
75macro_rules! serialize_if_not_none {
76    ($state: expr, $field_name: expr, $value: expr) => {
77        if let Some(v) = $value {
78            $state.serialize_field($field_name, v)?
79        }
80    };
81}