fs_tools 0.2.0

Tools to manipulate files.
Documentation
  • Coverage
  • 100%
    88 out of 88 items documented49 out of 49 items with examples
  • Size
  • Source code size: 161.92 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 9.26 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 47s Average build duration of successful builds.
  • all releases: 47s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • Homepage
  • Repository
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • Wandalen

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