15 releases
0.1.14 | Oct 3, 2024 |
---|---|
0.1.13 | Mar 22, 2024 |
0.1.12 | Dec 22, 2023 |
0.1.11 | Apr 28, 2021 |
0.1.10 | Mar 23, 2021 |
#33 in Filesystem
128,296 downloads per month
Used in 130 crates
(92 directly)
17KB
97 lines
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
Metric output format: x/y
x = unsafe code used by the build
y = total unsafe code found in the crate
Symbols:
🔒 = No `unsafe` usage found, declares #![forbid(unsafe_code)]
❓ = No `unsafe` usage found, missing #![forbid(unsafe_code)]
☢️ = `unsafe` usage found
Functions Expressions Impls Traits Methods Dependency
0/0 0/0 0/0 0/0 0/0 🔒 temp-dir 0.1.14
0/0 0/0 0/0 0/0 0/0
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
License: Apache-2.0