fast-fs 0.2.1

High-speed async file system traversal library with batteries-included file browser component
Documentation
//! Basic directory traversal example
//!
//! This example demonstrates the core directory reading functions.
//!
//! Run with: `cargo run --example basic_traversal`

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);

    // Simple directory read (includes hidden files)
    let entries = read_dir(&path).await?;
    println!("Total entries: {}", entries.len());

    // Non-hidden files only
    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 ===");

    // Recursive with options
    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()
    );

    // Filter by extension
    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(())
}