#[cfg(not(coverage))] /// Keeps `parse_env_file` explicit because it sits on camera selection, where negotiated profiles must match the server output contract. /// Inputs are the typed parameters; output is the return value or side effect. fn parse_env_file(text: &str) -> HashMap { let mut out = HashMap::new(); for line in text.lines() { let line = line.trim(); if line.is_empty() || line.starts_with('#') { continue; } let mut parts = line.splitn(2, '='); let key = match parts.next() { Some(v) => v.trim(), None => continue, }; let val = match parts.next() { Some(v) => v.trim(), None => continue, }; out.insert(key.to_string(), val.to_string()); } out } pub(crate) fn read_u32_from_env(key: &str) -> Option { std::env::var(key).ok().and_then(|v| v.parse::().ok()) } #[cfg(not(coverage))] fn read_u32_from_map(map: &HashMap, key: &str) -> Option { map.get(key).and_then(|v| v.parse::().ok()) }