use itertools::Itertools;
use std::collections::HashMap;
pub fn create_mapping(string: &str) -> Result<HashMap<String, Vec<String>>, String> {
string
.split(",")
.map(|inner| {
match inner.split("->").collect_vec().as_slice() {
[col] => {
Ok((col.to_string(), vec![col.to_string()]))
}
[col, acts] => {
let activity_categories = acts.split("-").map(|s| s.to_string()).collect_vec();
Ok((col.to_string(), activity_categories))
}
_ => Err(format!(
"invalid mapping string '{inner}' must be in the format 'col->acts'"
)),
}
})
.collect::<Result<HashMap<_, _>, String>>()
}