diff --git a/tvix/castore/src/directoryservice/mod.rs b/tvix/castore/src/directoryservice/mod.rs index f9d8e08b3..523c61d05 100644 --- a/tvix/castore/src/directoryservice/mod.rs +++ b/tvix/castore/src/directoryservice/mod.rs @@ -63,6 +63,31 @@ pub trait DirectoryService: Send + Sync { fn put_multiple_start(&self) -> Box; } +#[async_trait] +impl DirectoryService for A +where + A: AsRef + Send + Sync, +{ + async fn get(&self, digest: &B3Digest) -> Result, Error> { + self.as_ref().get(digest).await + } + + async fn put(&self, directory: proto::Directory) -> Result { + self.as_ref().put(directory).await + } + + fn get_recursive( + &self, + root_directory_digest: &B3Digest, + ) -> BoxStream> { + self.as_ref().get_recursive(root_directory_digest) + } + + fn put_multiple_start(&self) -> Box { + self.as_ref().put_multiple_start() + } +} + /// Provides a handle to put a closure of connected [proto::Directory] elements. /// /// The consumer can periodically call [DirectoryPutter::put], starting from the