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 successfullyErrif 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
atomic_writefor single file atomic writessafe_writefor string content conveniencecrate::utils::fs::copy_files_parallelfor file copying operations