Something went wrong. Try again.
Monorepo for Tangled
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031use tempfile::TempDir;
/// A [`gix::Repository`] backed by a temporary directory that is removed on drop. Derefs to/// `gix::Repository`, so it is used just like one; keeping it alive keeps the scratch dir alive.pub struct TempRepository { repo: gix::Repository, // Declared AFTER `repo` so `repo` drops first: any file handles into the scratch dir close // before the dir itself is removed (Rust drops struct fields in declaration order). _dir: TempDir,}
impl TempRepository { pub fn open(dir: TempDir) -> Result<Self, gix::open::Error> { let repo = gix::open(dir.path())?; Ok(Self { repo, _dir: dir }) }
#[allow(dead_code)] pub fn with_object_memory(mut self) -> Self { self.repo.objects.enable_object_memory(); self }}
impl std::ops::Deref for TempRepository { type Target = gix::Repository; fn deref(&self) -> &gix::Repository { &self.repo }}