[][src]Crate filenamegen

Filename Generation, aka Globbing.

This crate implements shell style file name generation a.k.a.: globbing. The provided globber can expand globs relative to a specified directory (or just the current working directory). filenamegen tries to avoid walking down paths that will never match a glob in order to reduce pressure on the underlying filesystem.

This simple example recursively finds all of the rust source files under the current directory.

use filenamegen::Glob;

fn main() -> anyhow::Result<()> {
  let glob = Glob::new("**/*.rs")?;
  for path in glob.walk(std::env::current_dir()?) {
    println!("{}", path.display());



Represents a compiled glob expression. Depending on the pattern, evaluating the glob may use a conservative walker that tries to minimize the number of syscalls to just the directories in which pattern matching needs to occur. If the recursive glob ** pattern is used then we have no choice but to perform a full tree walk for the appropriate portions of the filesystem.