unused_pub/
lib.rs

1use anyhow::Result;
2
3use std::path::PathBuf;
4
5pub mod analysis;
6pub mod visitor;
7pub mod walker;
8
9pub struct Report {
10    pub unused_items: Vec<UnusedItem>,
11    pub count: usize,
12}
13
14pub struct UnusedItem {
15    pub name: String,
16    pub kind: String,
17    pub location: String,
18}
19
20pub fn run(path: PathBuf, verbose: bool, filters: Vec<String>) -> Result<Report> {
21    // 1. Walk the directory
22    let files = walker::get_rust_files(&path)?;
23    if verbose {
24        println!("Found {} Rust files.", files.len());
25    }
26
27    // 2. Parse and Collect Definitions AND Usages (Parallelized later if needed)
28    // For now, simpler sequential or simple parallel map
29
30    let (definitions, usages) = analysis::analyze(files, verbose)?;
31
32    // 3. Diff
33    let unused_items = analysis::diff(definitions, usages, filters);
34
35    Ok(Report {
36        count: unused_items.len(),
37        unused_items,
38    })
39}