#[cfg(feature = "distributed-tracing")]
use std::collections::HashMap;
pub fn parse_bool_env(var_name: &str, default: bool) -> bool {
std::env::var(var_name)
.ok()
.and_then(|v| v.parse().ok())
.unwrap_or(default)
}
#[cfg(feature = "distributed-tracing")]
pub fn parse_string_list_env(var_name: &str, default: Vec<String>) -> Vec<String> {
std::env::var(var_name)
.ok()
.map(|v| v.split(',').map(|s| s.trim().to_string()).collect())
.unwrap_or(default)
}
#[cfg(feature = "distributed-tracing")]
pub fn parse_key_value_env(var_name: &str) -> HashMap<String, String> {
std::env::var(var_name)
.ok()
.map(|v| parse_key_value_string(&v))
.unwrap_or_default()
}
#[cfg(feature = "distributed-tracing")]
pub fn parse_key_value_string(s: &str) -> HashMap<String, String> {
let mut map = HashMap::new();
let separator = if s.contains(';') { ';' } else { ',' };
for pair in s.split(separator) {
let pair = pair.trim();
if let Some((key, value)) = pair.split_once('=') {
map.insert(key.trim().to_string(), value.trim().to_string());
}
}
map
}