lbl/filesystem/
path_utils.rs

1use std::collections::HashMap;
2use std::path::PathBuf;
3
4/// partition paths by path extension
5pub fn paths_by_extension(paths: Vec<PathBuf>) -> HashMap<String, Vec<PathBuf>> {
6    let mut map: HashMap<String, Vec<PathBuf>> = HashMap::new();
7
8    for path in paths {
9        if let Some(ext) = path.extension() {
10            if let Some(ext_str) = ext.to_str() {
11                map.entry(ext_str.to_string()).or_default().push(path);
12            } else {
13                map.entry(String::from("misc")).or_default().push(path);
14            }
15        } else {
16            map.entry(String::from("none")).or_default().push(path);
17        }
18    }
19    map
20}