blackbox_log/
utils.rs

1pub(crate) fn to_base_field(field: &str) -> &str {
2    field.split_once('[').map_or(field, |(base, _)| base)
3}
4
5macro_rules! include_generated {
6    ($file:literal) => {
7        include!(concat!(
8            env!("CARGO_MANIFEST_DIR"),
9            "/src/generated/",
10            $file,
11            ".rs"
12        ));
13    };
14}
15
16macro_rules! byte_enum {
17    (
18        $( #[$attr:meta] )*
19        $pub:vis enum $name:ident {
20            $(
21                $( #[$variant_attr:meta] )*
22                $variant:ident = $value:expr
23            ),+
24            $(,)?
25        }
26    ) => {
27        $( #[$attr] )*
28        $pub enum $name {
29            $( $( #[$variant_attr] )* $variant = $value ),+
30        }
31
32        impl $name {
33            #[allow(dead_code)]
34            pub(crate) const fn from_byte(byte: u8) -> Option<Self> {
35                match byte {
36                    $( $value => Some(Self::$variant), )+
37                    _ => None,
38                }
39            }
40
41            #[allow(dead_code)]
42            pub(crate) fn from_num_str(s: &str) -> Option<Self> {
43                match s {
44                    $( stringify!($value) => Some(Self::$variant), )+
45                    _ => None,
46                }
47            }
48        }
49
50        impl From<$name> for u8 {
51            fn from(from: $name) -> u8 {
52                match from {
53                    $( $name::$variant => $value ),+
54                }
55            }
56        }
57    }
58}