fast-fs 0.2.1

High-speed async file system traversal library with batteries-included file browser component
Documentation
// <FILE>crates/fast-fs/src/lib.rs</FILE> - <DESC>Entry point re-exporting OFPF modules</DESC>
// <VERS>VERSION: 0.10.0</VERS>
// <WCTX>Preparing for crates.io release</WCTX>
// <CLOG>Added missing_docs lint, improved crate-level documentation</CLOG>

#![deny(missing_docs)]
#![deny(rustdoc::broken_intra_doc_links)]

//! High-speed async file system traversal and navigation library.
//!
//! `fast-fs` provides two main capabilities:
//!
//! 1. **Directory Reading Functions** - Simple async functions for traversing directories
//! 2. **Navigation Module ([`nav`])** - A batteries-included file browser state machine
//!
//! # Quick Start
//!
//! ```no_run
//! use fast_fs::{read_dir, read_dir_recursive, TraversalOptions};
//!
//! # async fn example() -> Result<(), fast_fs::Error> {
//! // Read a single directory
//! let files = read_dir("/path/to/dir").await?;
//!
//! // Recursive with options
//! let options = TraversalOptions::default()
//!     .with_max_depth(3)
//!     .with_extensions(&["rs", "toml"]);
//! let all_files = read_dir_recursive("/project", options).await?;
//!
//! for file in all_files {
//!     println!("{}: {} bytes", file.name, file.size);
//! }
//! # Ok(())
//! # }
//! ```
//!
//! # File Browser Component
//!
//! For building file pickers, save dialogs, and project explorers, see the [`nav`] module:
//!
//! ```no_run
//! use fast_fs::nav::{Browser, BrowserConfig, KeyInput, ActionResult};
//!
//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
//! let config = BrowserConfig::open_dialog();
//! let mut browser = Browser::new(config).await?;
//!
//! // Handle key input
//! match browser.handle_key(KeyInput::Down).await {
//!     ActionResult::Done => { /* re-render */ }
//!     ActionResult::FileSelected(path) => println!("Selected: {}", path.display()),
//!     _ => {}
//! }
//! # Ok(())
//! # }
//! ```
//!
//! # Feature Highlights
//!
//! - **Async I/O** - Non-blocking traversal using tokio
//! - **Streaming API** - Memory-efficient traversal with backpressure
//! - **Gitignore Support** - Built-in `.gitignore` and `.ignore` pattern matching
//! - **Vim-style Navigation** - Configurable key bindings
//! - **Multi-Selection** - Range selection with Shift+Arrow
//! - **Framework-Agnostic** - You handle rendering, we handle state
mod error;
pub mod filter;
mod functions;
pub mod models;
pub mod nav;
pub mod reader;
// Re-export domain types
pub use error::Error;
pub use filter::cls_gitignore_matcher::GitignoreMatcher;
pub use models::cls_file_entry::FileEntry;
pub use models::cls_file_list::FileList;
pub use models::cls_sort_by::SortBy;
pub use models::cls_traversal_options::TraversalOptions;
// Re-export functions (Flattened API)
pub use functions::fnc_is_ignored::is_ignored;
pub use reader::fnc_read_dir::read_dir;
pub use reader::fnc_read_dir_recursive::read_dir_recursive;
pub use reader::fnc_read_dir_stream::read_dir_stream;
pub use reader::fnc_read_dir_visible::read_dir_visible;
/// Result type for fast-fs operations
pub type Result<T> = std::result::Result<T, Error>;

// <FILE>crates/fast-fs/src/lib.rs</FILE>
// <VERS>END OF VERSION: 0.9.0</VERS>