use std::path::{Path, PathBuf};
use super::Import;
pub fn dependents_of<P: AsRef<Path>>(module: &str, index: &[(P, Vec<Import>)]) -> Vec<PathBuf> {
let module_finder = memchr::memmem::Finder::new(module.as_bytes());
let mut out = Vec::new();
for (path, imports) in index {
if imports_mention(module, &module_finder, imports) {
out.push(path.as_ref().to_path_buf());
}
}
out.sort();
out
}
pub fn imports_mention(module: &str, module_finder: &memchr::memmem::Finder<'_>, imports: &[Import]) -> bool {
imports.iter().any(|imp| {
let module_match = imp
.module
.as_deref()
.is_some_and(|m| m == module || module_finder.find(m.as_bytes()).is_some());
module_match || module_finder.find(imp.raw.as_bytes()).is_some()
})
}