use std::collections::HashMap;
pub fn parse_csv<T: std::str::FromStr>(input: &str) -> Result<Vec<T>, String> {
input
.split(',')
.map(|s| {
s.trim()
.parse::<T>()
.map_err(|_| format!("Invalid value in list: '{}'", s))
})
.collect()
}
pub fn parse_keyval_csv(input: &str) -> Result<HashMap<usize, u16>, String> {
let mut map = HashMap::new();
for part in input.split(',') {
let (k, v) = part
.split_once('=')
.ok_or_else(|| format!("Invalid format: '{}'", part))?;
let key = k
.trim()
.parse::<usize>()
.map_err(|_| format!("Invalid frame index: '{}'", k))?;
let val = v
.trim()
.parse::<u16>()
.map_err(|_| format!("Invalid delay value: '{}'", v))?;
map.insert(key, val);
}
Ok(map)
}