1 unstable release

0.1.0 Mar 23, 2024

#1018 in Filesystem

ISC license

15KB
206 lines

dirscent — directory descent

dirscent provides a simple and efficient iterator over the entries of a directory, and, recursively, over the entries of all subdirectories.

Install

Add the dependency to your Cargo.toml

[dependencies]
dirscent = "0.1"

Or from the command line

% cargo add dirscent@0.1

Usage

Iterate down the hierarchy skipping the entries for which the process does not have permissions

use dirscent::dirscent;

fn main() {
    for it in dirscent("/usr")
        .unwrap()
        .postorder()
        .skip_permission_denied()
    {
        match it {
            Ok(entry) => println!("{}", entry.path().display()),
            Err(err) => eprintln!("{err:?}"),
        }
    }
}

Performance

On my system, dirscent is 1.5× faster than fts(3) and 2× faster than find(1). Run benches/b.sh and see for yourself.

No runtime deps