diff options
author | Florian Klink <flokli@flokli.de> | 2024-10-18T12·41+0200 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2024-10-18T21·45+0000 |
commit | 9c223450199b466c535f2b715ad68f1f295fa7dc (patch) | |
tree | 18834efec0cefeb1a6362095e6b2b4e7e094cfe1 /tvix/castore/src/blobservice | |
parent | 47efebfc6fcbce028c0f3df5f9d584119e8e8ffe (diff) |
refactor(tvix/[ca]store): use auto_impl r/8835
This implements BS, DS, PS for Box'ed or Arc'ed variants of it with less code, and less potential to accidentially forget to proxy default trait methods for blanked impls, as fixed in cl/12658. Change-Id: If2cdbb563a73792038ebe7bff45d6f880214855b Reviewed-on: https://cl.tvl.fyi/c/depot/+/12661 Tested-by: BuildkiteCI Autosubmit: flokli <flokli@flokli.de> Reviewed-by: edef <edef@edef.eu>
Diffstat (limited to 'tvix/castore/src/blobservice')
-rw-r--r-- | tvix/castore/src/blobservice/mod.rs | 24 |
1 files changed, 2 insertions, 22 deletions
diff --git a/tvix/castore/src/blobservice/mod.rs b/tvix/castore/src/blobservice/mod.rs index 85292722fa7e..efba927b586b 100644 --- a/tvix/castore/src/blobservice/mod.rs +++ b/tvix/castore/src/blobservice/mod.rs @@ -1,5 +1,6 @@ use std::io; +use auto_impl::auto_impl; use tonic::async_trait; use crate::composition::{Registry, ServiceBuilder}; @@ -29,6 +30,7 @@ pub use self::object_store::{ObjectStoreBlobService, ObjectStoreBlobServiceConfi /// which will implement a writer interface, and also provides a close funtion, /// to finalize a blob and get its digest. #[async_trait] +#[auto_impl(&, &mut, Arc, Box)] pub trait BlobService: Send + Sync { /// Check if the service has the blob, by its content hash. /// On implementations returning chunks, this must also work for chunks. @@ -60,28 +62,6 @@ pub trait BlobService: Send + Sync { } } -#[async_trait] -impl<A> BlobService for A -where - A: AsRef<dyn BlobService> + Send + Sync, -{ - async fn has(&self, digest: &B3Digest) -> io::Result<bool> { - self.as_ref().has(digest).await - } - - async fn open_read(&self, digest: &B3Digest) -> io::Result<Option<Box<dyn BlobReader>>> { - self.as_ref().open_read(digest).await - } - - async fn open_write(&self) -> Box<dyn BlobWriter> { - self.as_ref().open_write().await - } - - async fn chunks(&self, digest: &B3Digest) -> io::Result<Option<Vec<ChunkMeta>>> { - self.as_ref().chunks(digest).await - } -} - /// A [tokio::io::AsyncWrite] that the user needs to close() afterwards for persist. /// On success, it returns the digest of the written blob. #[async_trait] |