use std::path::{Path, PathBuf};
/// A directory under the system temporary directory, removed on drop.
pub struct TempDir(PathBuf);
impl TempDir {
/// Creates an empty directory whose name includes `name` and the process ID.
pub fn new(name: &str) -> Self {
let path = std::env::temp_dir().join(format!("topcoat-new-{name}-{}", std::process::id()));
let _ = std::fs::remove_dir_all(&path);
std::fs::create_dir_all(&path).unwrap();
Self(path)
}
pub fn path(&self) -> &Path {
&self.0
}
}
impl Drop for TempDir {
fn drop(&mut self) {
let _ = std::fs::remove_dir_all(&self.0);
}
}