atomic_write_multiple

Function atomic_write_multiple 

Source
pub async fn atomic_write_multiple(files: &[(PathBuf, Vec<u8>)]) -> Result<()>
Expand description

Writes multiple files atomically in parallel.

This function performs multiple atomic write operations concurrently, which can significantly improve performance when writing many files. Each file is written atomically using the same write-then-rename strategy as atomic_write.

§Arguments

  • files - A slice of (path, content) pairs to write

§Returns

  • Ok(()) if all files were written successfully
  • Err if any write operation fails, with details about all failures

§Examples

use agpm_cli::utils::fs::atomic_write_multiple;
use std::path::PathBuf;

let files = vec![
    (PathBuf::from("config1.toml"), b"[sources]\ncommunity = \"url1\"".to_vec()),
    (PathBuf::from("config2.toml"), b"[sources]\nprivate = \"url2\"".to_vec()),
    (PathBuf::from("readme.md"), b"# Project Documentation".to_vec()),
];

atomic_write_multiple(&files).await?;
println!("All configuration files written atomically!");

§Atomicity Guarantees

  • Each individual file is written atomically
  • Either all files are written successfully or the operation fails
  • No partially written files are left on disk
  • Parent directories are created automatically

§Performance

This function uses parallel execution to improve performance:

  • Multiple files written concurrently
  • Scales with available CPU cores and I/O bandwidth
  • Particularly effective for many small files
  • Maintains atomicity guarantees for each file

§See Also