1pub use const_str::concat;
2pub use tracing;
3
4#[macro_export]
5macro_rules! info {
6 (target: $target:expr, $($arg:tt)*) => {
7
8 $crate::log::tracing::info!(target: $crate::log::concat!($crate::extract_crate_name!(), " ", $target), $($arg)*)
9 };
10 (name: $name:expr, target: $target:expr, $($arg:tt)*) => {
11
12 $crate::log::tracing::info!(
13 name: $name,
14 target: $crate::log::concat!($crate::extract_crate_name!(), " ", $target),
15 $($arg)*
16 )
17 };
18 ($($arg:tt)*) => {
19 $crate::log::tracing::info!($($arg)*)
20 };
21}
22
23#[macro_export]
24macro_rules! warn {
25 (target: $target:expr, $($arg:tt)*) => {
26
27 $crate::log::tracing::warn!(target: $crate::log::concat!($crate::extract_crate_name!(), " ", $target), $($arg)*)
28 };
29 (name: $name:expr, target: $target:expr, $($arg:tt)*) => {
30
31 $crate::log::tracing::warn!(
32 name: $name,
33 target: $crate::log::concat!($crate::extract_crate_name!(), " ", $target),
34 $($arg)*
35 )
36 };
37 ($($arg:tt)*) => {
38 $crate::log::tracing::warn!($($arg)*)
39 };
40}
41
42#[macro_export]
43macro_rules! error {
44 (target: $target:expr, $($arg:tt)*) => {
45
46 $crate::log::tracing::error!(target: $crate::log::concat!($crate::extract_crate_name!(), " ", $target), $($arg)*)
47 };
48 (name: $name:expr, target: $target:expr, $($arg:tt)*) => {
49
50 $crate::log::tracing::error!(
51 name: $name,
52 target: $crate::log::concat!($crate::extract_crate_name!(), " ", $target),
53 $($arg)*
54 )
55 };
56 ($($arg:tt)*) => {
57 $crate::log::tracing::error!($($arg)*)
58 };
59}
60
61#[macro_export]
63macro_rules! extract_crate_name {
64 () => {{
65 const MODULE_PATH_SEPARATOR: u8 = b':';
66 const MODULE_PATH_BYTE_SLICE: &[u8] = module_path!().as_bytes();
67 const MODULE_PATH_SEPARATOR_INDEX: usize = {
68 let mut index = 0;
69 loop {
70 if index == MODULE_PATH_BYTE_SLICE.len() || MODULE_PATH_BYTE_SLICE[index] == MODULE_PATH_SEPARATOR {
71 break index;
72 }
73 index += 1;
74 }
75 };
76 const NEW_SLICE: [u8; MODULE_PATH_SEPARATOR_INDEX] = {
77 let mut arr = [0; MODULE_PATH_SEPARATOR_INDEX];
78 let mut i = 0;
79 while i < MODULE_PATH_SEPARATOR_INDEX {
80 arr[i] = MODULE_PATH_BYTE_SLICE[i];
81 i += 1;
82 }
83 arr
84 };
85
86 unsafe { std::str::from_utf8_unchecked(&NEW_SLICE) }
90 }};
91}