Files
hottub/src/util/mod.rs
2026-03-22 17:26:12 +00:00

53 lines
1.2 KiB
Rust

pub mod cache;
pub mod discord;
pub mod flaresolverr;
pub mod flow_debug;
pub mod hoster_proxy;
pub mod proxy;
pub mod requester;
pub mod time;
pub fn parse_abbreviated_number(s: &str) -> Option<u32> {
let s = s.trim();
if s.is_empty() {
return None;
}
let (num_part, suffix) = s
.chars()
.partition::<String, _>(|c| c.is_ascii_digit() || *c == '.');
let multiplier = match suffix.trim().to_ascii_uppercase().as_str() {
"K" => 1_000.0,
"M" => 1_000_000.0,
"B" => 1_000_000_000.0,
"" => 1.0,
_ => return None,
};
num_part
.parse::<f64>()
.ok()
.map(|n| (n * multiplier) as u32)
}
#[cfg(not(hottub_single_provider))]
pub fn interleave<T: Clone>(lists: &[Vec<T>]) -> Vec<T> {
let mut result = Vec::new();
if lists.is_empty() {
return result;
}
// Find the maximum length among the lists
let max_len = lists.iter().map(|l| l.len()).max().unwrap_or(0);
// Interleave elements
for i in 0..max_len {
for list in lists {
if let Some(item) = list.get(i) {
result.push(item.clone());
}
}
}
result
}