use std::path::PathBuf;
pub struct AsyncTempDir {
inner: Option<tempfile::TempDir>,
}
impl AsyncTempDir {
pub fn new(inner: tempfile::TempDir) -> Self {
Self { inner: Some(inner) }
}
}
impl Drop for AsyncTempDir {
fn drop(&mut self) {
let Some(inner) = self.inner.take() else {
return;
};
let path: PathBuf = inner.keep();
match tokio::runtime::Handle::try_current() {
Ok(handle) => {
handle.spawn_blocking(move || {
let _ = std::fs::remove_dir_all(&path);
});
},
Err(_) => {
let _ = std::fs::remove_dir_all(&path);
},
}
}
}