Skip to main content

Crate fs_tools

Crate fs_tools 

Source
Expand description

§Module :: fs_tools

experimental rust-status docs.rs discord

Tools to manipulate files.

§Features

  • TempDir: Temporary directory management with RAII cleanup
    • full_path() - Compose path from base/prefix/postfix components
    • create() - Create directory (parent must exist)
    • create_all() - Create directory with all parents
    • Automatic cleanup on drop for created directories
  • glob (optional): Unix shell-style pattern matching via re-export

§Basic Usage

§TempDir with RAII Cleanup

use fs_tools::TempDir;
use std::path::PathBuf;

let mut temp = TempDir::new();
temp.base_path = std::env::temp_dir();
temp.prefix_path = PathBuf::from( "my_app" );
temp.postfix_path = PathBuf::from( "session_1" );

// Create directory (enables automatic cleanup)
let path = temp.create_all().expect( "failed to create" );
assert!( path.is_dir() );

// Directory is automatically removed when `temp` goes out of scope

§Glob Pattern Matching

use fs_tools::glob::glob;

// Find all Rust files in current directory
for entry in glob( "*.rs" ).expect( "valid pattern" )
{
  if let Ok( path ) = entry
  {
    println!( "{:?}", path );
  }
}

§Recursive Glob

use fs_tools::glob::glob;

// Find all Rust files recursively
for entry in glob( "src/**/*.rs" ).expect( "valid pattern" )
{
  if let Ok( path ) = entry
  {
    println!( "{:?}", path );
  }
}

§Pattern Matching

use fs_tools::glob::Pattern;

let pattern = Pattern::new( "*.rs" ).expect( "valid pattern" );

assert!( pattern.matches( "lib.rs" ) );
assert!( !pattern.matches( "Cargo.toml" ) );

§To add to your project

# Basic (TempDir only)
cargo add fs_tools

# With glob support
cargo add fs_tools --features glob

# All features
cargo add fs_tools --features full

§Try out from the repository

git clone https://github.com/Wandalen/wTools
cd wTools
cd examples/test_trivial
cargo run

Modules§

dependency
Namespace with dependencies.
exposed
Exposed namespace of the module.
fs
Collection of primal data types.
glob
Re-export of the glob crate for filesystem pattern matching.
orphan
Shared with parent namespace of the module
own
Own namespace of the module.
path
Path traversal utilities. Path traversal utilities for filesystem navigation.
prelude
Prelude to use essentials: use my_module ::prelude :: *.

Structs§

TempDir
Temporary directory management structure with RAII cleanup.

Functions§

collect_files_in_ancestors
Collect files matching predicate from current directory up to root.
dir_upward_find
Find directory by name walking upward from start directory.
file_upward_find
Find file by name walking upward from start directory.
matching_upward_find
Find any file or directory matching predicate walking upward.
traverse_upward
Traverse upward through directory tree looking for target.