2026-02-14 12:12:59 +01:00
|
|
|
mod bitset;
|
2025-06-19 13:22:43 +02:00
|
|
|
mod constants;
|
2026-03-05 00:04:53 +01:00
|
|
|
mod crypto;
|
2026-02-14 12:12:59 +01:00
|
|
|
mod default_utils;
|
2025-06-24 01:06:25 +02:00
|
|
|
mod directed_graph;
|
|
|
|
|
mod hash_utils;
|
2025-10-28 13:28:59 +01:00
|
|
|
mod hdhomerun_utils;
|
2026-02-14 12:12:59 +01:00
|
|
|
mod json_utils;
|
2025-10-28 18:42:09 +01:00
|
|
|
mod net_utils;
|
2025-11-11 10:00:35 +01:00
|
|
|
mod number_utils;
|
2026-02-14 12:12:59 +01:00
|
|
|
mod request;
|
|
|
|
|
mod serde_utils;
|
|
|
|
|
mod size_utils;
|
2026-01-08 15:11:12 +01:00
|
|
|
mod string_interner;
|
2026-02-14 12:12:59 +01:00
|
|
|
mod string_utils;
|
|
|
|
|
mod time_utils;
|
2025-06-19 12:52:01 +02:00
|
|
|
|
2026-02-14 12:12:59 +01:00
|
|
|
pub use self::{
|
2026-03-05 00:04:53 +01:00
|
|
|
constants::*, crypto::*, default_utils::*, directed_graph::*, hash_utils::*, hdhomerun_utils::*, json_utils::*,
|
|
|
|
|
net_utils::*, number_utils::*, request::*, serde_utils::*, size_utils::*, string_interner::*, string_utils::*,
|
|
|
|
|
time_utils::*,
|
2026-02-14 12:12:59 +01:00
|
|
|
};
|
2025-07-28 14:46:13 +02:00
|
|
|
use std::fmt::Display;
|
|
|
|
|
|
|
|
|
|
#[macro_export]
|
|
|
|
|
macro_rules! write_if_some {
|
|
|
|
|
($f:expr, $self:ident, $( $label:literal => $field:ident ),+ $(,)?) => {
|
|
|
|
|
$(
|
|
|
|
|
if let Some(ref val) = $self.$field {
|
|
|
|
|
write!($f, "{}{}", $label, val)?;
|
|
|
|
|
}
|
|
|
|
|
)+
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub fn display_vec<T: Display>(vec: &[T]) -> String {
|
2026-02-14 12:12:59 +01:00
|
|
|
let inner = vec.iter().map(|item| format!("{item}")).collect::<Vec<_>>().join(", ");
|
2025-07-28 14:46:13 +02:00
|
|
|
format!("[{inner}]")
|
2025-10-28 13:28:59 +01:00
|
|
|
}
|