Thanks to visit codestin.com
Credit goes to lib.rs

18 releases

0.2.0 Feb 10, 2026
0.1.16 May 6, 2025
0.1.14 Oct 3, 2024
0.1.13 Mar 22, 2024
0.1.10 Mar 23, 2021

#55 in Filesystem

Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App

397,840 downloads per month
Used in 211 crates (133 directly)

Apache-2.0

17KB
105 lines

temp-dir

crates.io version license: Apache 2.0 unsafe forbidden pipeline status

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

Alternatives

  • tempdir
    • Unmaintained
    • Popular and mature
    • Heavy dependencies (rand, winapi)
  • tempfile
    • Popular and mature
    • Contains unsafe, dependencies full of unsafe
    • Heavy dependencies (libc, winapi, rand, etc.)
  • test_dir
    • Has a handy TestDir struct
    • Incomplete documentation
  • 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.2.0

0/0        0/0          0/0    0/0     0/0

Changelog

  • v0.2.0 - Implement AsRef<Path> on &TempDir not TempDir, to eliminate footgun.
  • v0.1.16 - dont_delete_on_drop(). Thanks to A L Manning for discussion.
  • v0.1.15 - Remove a dev dependency.
  • 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 of String.
    • Add cleanup.
  • 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 users KhorneLordOfChaos and dpc_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

No runtime deps