Crates.io | staged_file |
lib.rs | staged_file |
version | 0.5.0 |
source | src |
created_at | 2021-03-29 23:05:02.865449 |
updated_at | 2024-05-15 16:49:11.508373 |
description | Creates a temporary file which can then be committed to a final path. |
homepage | |
repository | https://github.com/bluk/staged_file |
max_upload_size | |
id | 375395 |
size | 38,735 |
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.
[dependencies]
staged_file = "0.5.0"
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.
The library is used as a dependency in this crate to create temporary directories.
A cross platform atomic file writes library.
Licensed under either of Apache License, Version 2.0 or MIT License at your option.
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.