use fast_fs::{read_dir, read_dir_recursive, read_dir_visible, TraversalOptions};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let path = std::env::args().nth(1).unwrap_or_else(|| ".".to_string());
println!("=== Basic Directory Read ===");
println!("Reading: {}\n", path);
let entries = read_dir(&path).await?;
println!("Total entries: {}", entries.len());
let visible = read_dir_visible(&path).await?;
println!("Visible entries: {}", visible.len());
println!("\nFirst 10 entries:");
for entry in entries.iter().take(10) {
let kind = if entry.is_dir { "DIR " } else { "FILE" };
let hidden = if entry.is_hidden { " (hidden)" } else { "" };
println!(" {} {}{}", kind, entry.name, hidden);
}
println!("\n=== Recursive Traversal ===");
let options = TraversalOptions::default()
.with_max_depth(2)
.with_gitignore(true);
let all_entries = read_dir_recursive(&path, options).await?;
println!(
"Total files (depth 2, respecting .gitignore): {}",
all_entries.len()
);
let options = TraversalOptions::default()
.with_max_depth(3)
.with_extensions(&["rs", "toml"]);
let rust_files = read_dir_recursive(&path, options).await?;
println!("Rust files (.rs, .toml): {}", rust_files.len());
if !rust_files.is_empty() {
println!("\nSample Rust files:");
for entry in rust_files.iter().take(5) {
println!(" {} ({} bytes)", entry.name, entry.size);
}
}
Ok(())
}