cargo-files 0.3.1

List all source files in a cargo crate
cargo-files-0.3.1 is not a library.


Latest version downloads Build Status Apache/MIT2.0 License

A tool to list all source files in a cargo crate.


While I was writing cargo-derivefmt I found myself wishing for a simple way to get the source files in a cargo crate. I wasn't able to find an existing crate which did this, so I wrote this one.

This library is still a work-in-progress. There are likely many issues and unsupported situations.


For end users, we provide a CLI which lists all source files in a crate.


cargo install (

cargo install cargo-files --locked

cargo install (master)

cargo install --git --locked


cargo files

Sample output

> cargo files


The cargo-files-core crate contains the logic underlying cargo-files, and can be reused by other applications that care about source files. At the moment the API is extremely simplistic, but any improvement suggestions are welcome!

Minimal example

use cargo_files_core::{get_targets, get_target_files, Error};

fn main() -> Result<(), Error> {
    // Each target (e.g. bin/lib) in your workspace will contribute a target.
    let targets = get_targets(None)?;
    for target in targets {
        // Get all the files related to a specific target.
        let files = get_target_files(&target)?;
        for file in files {
            println!("{}", file.display());