unused-pub 0.1.3

A tool to detect unused public items (structs, enums, functions, etc.) in a Rust codebase.
Documentation
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> {
    // 1. Walk the directory
    let files = walker::get_rust_files(&path)?;
    if verbose {
        println!("Found {} Rust files.", files.len());
    }

    // 2. Parse and Collect Definitions AND Usages (Parallelized later if needed)
    // For now, simpler sequential or simple parallel map

    let (definitions, usages) = analysis::analyze(files, verbose)?;

    // 3. Diff
    let unused_items = analysis::diff(definitions, usages, filters);

    Ok(Report {
        count: unused_items.len(),
        unused_items,
    })
}