| Crates.io | dir-iterator |
| lib.rs | dir-iterator |
| version | 0.1.4 |
| created_at | 2024-11-14 22:02:32.74855+00 |
| updated_at | 2024-11-17 11:59:28.592022+00 |
| description | Iterator that recursively scans and filters files from a directory |
| homepage | |
| repository | https://github.com/fightling/dir-iterator |
| max_upload_size | |
| id | 1448388 |
| size | 14,147 |
Iterator that recursively scans and filters files from a directory.
Start using this library by running the following command in your cargo project directory.
cargo add dir-iterator
Read a directory by using DirIterator::build_from_path(path):
use dir_iterator::*;
fn main() {
// read directory `src`
DirIterator::build_from_path("src")
// maybe maybe
.expect("path not found")
// print it out
.for_each(|e| println!("{:?}", e.file_name()));
}
Read current directory by using DirIterator::build_current() is a little shorter because it will panic if current directory does not exist or can't be retrieved.
use dir_iterator::*;
fn main() {
// build a new iterator starting in the current directory
DirIterator::build_current()
// print each file name
.for_each(|e| println!("{:?}", e.file_name()));
}
You may use DirIterator::try_build_current() to get errors instead of panic.
Filter the result with wildcards by using exclude(wildcard) and which generates a filter.
use dir_iterator::*;
fn main() {
DirIterator::build_current()
// filter all files which have extension `txt`
.filter(exclude("*.txt"))
.for_each(|e| println!("{:?}", e.file_name()));
}
To prevent some directories from being scanned at all you ca use ignore(wildcard)
use dir_iterator::*;
fn main() {
DirIterator::current()
// ignore target directory
.ignore("target")
// ignore all hidden directories
.ignore(".*")
// build iterator
.build()
// exclude all hidden files
.filter(exclude(".*"))
.for_each(|e| println!("{:?}", e.path()));
}