use anyhow::Result;
use std::path::PathBuf;
pub mod analysis;
pub mod visitor;
pub mod walker;
pub struct Report {
pub unused_items: Vec<UnusedItem>,
pub count: usize,
}
pub struct UnusedItem {
pub name: String,
pub kind: String,
pub location: String,
}
pub fn run(path: PathBuf, verbose: bool, filters: Vec<String>) -> Result<Report> {
let files = walker::get_rust_files(&path)?;
if verbose {
println!("Found {} Rust files.", files.len());
}
let (definitions, usages) = analysis::analyze(files, verbose)?;
let unused_items = analysis::diff(definitions, usages, filters);
Ok(Report {
count: unused_items.len(),
unused_items,
})
}