INNER CODE UNIT · Rust
collect_dependencies
dontpanic92/OpenPAL3 · crosscom/ccidl-rs/src/lib.rs:244
fn collect_dependencies(
path: &Path,
visited: &mut HashSet<PathBuf>,
dependencies: &mut Vec<PathBuf>,
) -> Result<(), Error> {
let path = path.canonicalize().map_err(|source| Error::Io {
path: path.to_path_buf(),
source,
})?;
if !visited.insert(path.clone()) {
return Ok(());
}
dependencies.push(path.clone());
let unit = parse_file(&path)?;
let source_dir = path.parent().unwrap_or_else(|| Path::new(""));
for import in unit.imports {
collect_dependencies(&source_dir.join(import.file_name), visited, dependencies)?;