use std::sync::{Arc, Mutex}; use tempfile::TempDir; use super::real::FileSystem; pub(super) fn new() -> super::Result { let temp_dir = tempfile::tempdir()?; let base = temp_dir.path().to_path_buf(); let temp_dir = Arc::new(Mutex::new(temp_dir)); let real = super::real::new(base); Ok(TempFileSystem { real, _temp_dir: temp_dir, }) } #[derive(Clone, Debug)] pub struct TempFileSystem { real: FileSystem, _temp_dir: Arc>, } impl std::ops::Deref for TempFileSystem { type Target = FileSystem; fn deref(&self) -> &Self::Target { &self.real } }