pub fn parse_size(size_str: &str) -> Option { let mut num = String::new(); let mut unit = String::new(); for c in size_str.chars() { if c.is_digit(10) || c == '.' { num.push(c); } else { unit.push(c); } } let num: f64 = num.parse().ok()?; let multiplier = match unit.to_lowercase().as_str() { "g" | "gb" => 1024 * 1024 * 1024, "m" | "mb" => 1024 * 1024, "k" | "kb" => 1024, _ => panic!("Invalid Size"), }; Some((num * multiplier as f64) as u64) }