Expand description
§temp-dir
Provides a TempDir
struct.
§Features
- Makes a directory in a system temporary directory
- Recursively deletes the directory and its contents on drop
- Deletes symbolic links and does not follow them
- Optional name prefix
- Depends only on
std
forbid(unsafe_code)
- 100% test coverage
§Limitations
- Not security-hardened. For example, directory and file names are predictable.
- This crate uses
std::fs::remove_dir_all
which may be unreliable on Windows. See rust#29497 andremove_dir_all
crate.
§Alternatives
tempdir
- Unmaintained
- Popular and mature
- Heavy dependencies (rand, winapi)
tempfile
- Popular and mature
- Contains
unsafe
, dependencies full ofunsafe
- Heavy dependencies (libc, winapi, rand, etc.)
test_dir
- Has a handy
TestDir
struct - Incomplete documentation
- Has a handy
temp_testdir
- Incomplete documentation
mktemp
- Sets directory mode 0700 on unix
- Contains
unsafe
- No readme or online docs
§Related Crates
§Example
use temp_dir::TempDir;
let d = TempDir::new().unwrap();
// Prints "/tmp/t1a9b-0".
println!("{:?}", d.path());
let f = d.child("file1");
// Prints "/tmp/t1a9b-0/file1".
println!("{:?}", f);
std::fs::write(&f, b"abc").unwrap();
assert_eq!(
"abc",
std::fs::read_to_string(&f).unwrap(),
);
// Prints "/tmp/t1a9b-1".
println!(
"{:?}", TempDir::new().unwrap().path());
§Cargo Geiger Safety Report
§Changelog
- v0.1.14 -
AsRef<Path>
- v0.1.13 - Update docs.
- v0.1.12 - Work when the directory already exists.
- v0.1.11
- Return
std::io::Error
instead ofString
. - Add
cleanup
.
- Return
- v0.1.10 - Implement
Eq
,Ord
,Hash
- v0.1.9 - Increase test coverage
- v0.1.8 - Add
leak
. - v0.1.7 - Update docs:
Warn about
std::fs::remove_dir_all
being unreliable on Windows. Warn about predictable directory and file names. Thanks to Reddit user burntsushi. - v0.1.6 - Add
TempDir::panic_on_cleanup_error
. Thanks to Reddit usersKhorneLordOfChaos
anddpc_pw
for their comments. - v0.1.5 - Explain how it handles symbolic links. Thanks to Reddit user Mai4eeze for this idea.
- v0.1.4 - Update docs
- v0.1.3 - Minor code cleanup, update docs
- v0.1.2 - Update docs
- v0.1.1 - Fix license
- v0.1.0 - Initial version
Structs§
- The path of an existing writable directory in a system temporary directory.