feat(tvix/castore): AsRef<dyn DirectoryService> impl DirectoryService
This allows us to use containers around DirectoryServices as DirectoryServices too. Change-Id: I56cca27b3212858db8b12b874df0e567dd868711 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11248 Reviewed-by: raitobezarius <tvl@lahfa.xyz> Autosubmit: flokli <flokli@flokli.de> Tested-by: BuildkiteCI
This commit is contained in:
parent
21fcc1c9df
commit
6f5474bf02
1 changed files with 25 additions and 0 deletions
|
@ -63,6 +63,31 @@ pub trait DirectoryService: Send + Sync {
|
|||
fn put_multiple_start(&self) -> Box<dyn DirectoryPutter>;
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl<A> DirectoryService for A
|
||||
where
|
||||
A: AsRef<dyn DirectoryService> + Send + Sync,
|
||||
{
|
||||
async fn get(&self, digest: &B3Digest) -> Result<Option<proto::Directory>, Error> {
|
||||
self.as_ref().get(digest).await
|
||||
}
|
||||
|
||||
async fn put(&self, directory: proto::Directory) -> Result<B3Digest, Error> {
|
||||
self.as_ref().put(directory).await
|
||||
}
|
||||
|
||||
fn get_recursive(
|
||||
&self,
|
||||
root_directory_digest: &B3Digest,
|
||||
) -> BoxStream<Result<proto::Directory, Error>> {
|
||||
self.as_ref().get_recursive(root_directory_digest)
|
||||
}
|
||||
|
||||
fn put_multiple_start(&self) -> Box<dyn DirectoryPutter> {
|
||||
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
|
||||
|
|
Loading…
Reference in a new issue