Crate temp_dir[][src] version license: Apache 2.0 unsafe forbidden pipeline status


Provides a TempDir struct.


  • 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



  • 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


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();
// Prints "/tmp/t1a9b-1".
    "{:?}", TempDir::new().unwrap().path());

Cargo Geiger Safety Report


  • 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

Happy Contributors 🙂

Fixing bugs and adding features is easy and fast. Send us a pull request and we intend to:

  • Always respond within 24 hours
  • Provide clear & concrete feedback
  • Immediately make a new release for your accepted change



The path of an existing writable directory in a system temporary directory.