From 27ff98000b0cdf0ed30eb8837c7d44cd3e79d32f Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Thu, 25 May 2023 17:52:08 +0300 Subject: feat(tvix/store): eliminate generics in BlobStore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To construct various stores at runtime, we need to eliminate associated types from the BlobService trait, and return Box instead of specific types. This also means we can't consume self in the close() method, so everything we write to is put in an Option<>, and during the first close we take from there. Change-Id: Ia523b6ab2f2a5276f51cb5d17e81a5925bce69b6 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8647 Autosubmit: flokli Tested-by: BuildkiteCI Reviewed-by: tazjin --- tvix/store/src/tests/import.rs | 1 - tvix/store/src/tests/nar_renderer.rs | 2 -- tvix/store/src/tests/utils.rs | 4 ++-- 3 files changed, 2 insertions(+), 5 deletions(-) (limited to 'tvix/store/src/tests') diff --git a/tvix/store/src/tests/import.rs b/tvix/store/src/tests/import.rs index 8b66cb024b..725d467bd0 100644 --- a/tvix/store/src/tests/import.rs +++ b/tvix/store/src/tests/import.rs @@ -1,5 +1,4 @@ use super::utils::{gen_blob_service, gen_directory_service}; -use crate::blobservice::BlobService; use crate::directoryservice::DirectoryService; use crate::import::ingest_path; use crate::proto; diff --git a/tvix/store/src/tests/nar_renderer.rs b/tvix/store/src/tests/nar_renderer.rs index 198df0083c..3d7cfd4a96 100644 --- a/tvix/store/src/tests/nar_renderer.rs +++ b/tvix/store/src/tests/nar_renderer.rs @@ -1,5 +1,3 @@ -use crate::blobservice::BlobService; -use crate::blobservice::BlobWriter; use crate::directoryservice::DirectoryService; use crate::nar::NARRenderer; use crate::proto::DirectoryNode; diff --git a/tvix/store/src/tests/utils.rs b/tvix/store/src/tests/utils.rs index 2991feed41..ec379bddcf 100644 --- a/tvix/store/src/tests/utils.rs +++ b/tvix/store/src/tests/utils.rs @@ -4,8 +4,8 @@ use crate::{ pathinfoservice::{MemoryPathInfoService, PathInfoService}, }; -pub fn gen_blob_service() -> impl BlobService + Send + Sync + Clone + 'static { - MemoryBlobService::default() +pub fn gen_blob_service() -> Box { + Box::new(MemoryBlobService::default()) } pub fn gen_directory_service() -> impl DirectoryService + Send + Sync + Clone + 'static { -- cgit 1.4.1