2 unstable releases
0.5.0 | May 15, 2024 |
---|---|
0.4.0 | Aug 28, 2023 |
0.3.0 |
|
0.2.0 |
|
0.1.0 |
|
#604 in Filesystem
17KB
293 lines
StagedFile
StagedFile
helps write data to a temporary file, and then gives the option
to commit the temporary file to a desired final file path.
If a file exists at the desired final file path, the file will be overwritten during a commit function call currently.
Only UNIX is currently supported.
Installation
[dependencies]
staged_file = "0.5.0"
Example
use staged_file::StagedFile;
use std::fs::File;
use std::io::{prelude::*, LineWriter};
use std::path::Path;
let final_path = Path::new("/a/file/path");
let staged_file = StagedFile::with_final_path(&final_path)?;
let text = b"Hello World!";
{
// The LineWriter code is in a block so that `&staged_file` is not considered
// borrowed at the end of the block. Another way to get back the
// `staged_file` is to call `line_writer.into_inner()`.
let mut line_writer = LineWriter::new(&staged_file);
line_writer.write_all(text)?;
line_writer.flush()?;
}
staged_file.commit()?;
assert_eq!(std::fs::read(final_path)?, text);
If the commit()
method is not called, then the staged file contents are
discarded.
Other Libraries
The library is used as a dependency in this crate to create temporary directories.
A cross platform atomic file writes library.
License
Licensed under either of Apache License, Version 2.0 or MIT License at your option.
Contributions
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~3–11MB
~144K SLoC