refactor(tvix/*store/sled): make ::new() more generic

We don't really require the Path to be a PathBuf, we don't even require
it to be a Path, we only need it to be AsRef<Path>>.

This removes some conversion in the from_addr cases, which can just
reuse `url.path()` (a `&str`).

Change-Id: I38d536dbaf0b44421e41f211a9ad2b13605179e9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10258
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
Tested-by: BuildkiteCI
This commit is contained in:
Florian Klink 2023-12-11 22:11:01 +02:00 committed by clbot
parent 9748543f1c
commit ccaf10b4a6
6 changed files with 10 additions and 11 deletions

View file

@ -63,7 +63,7 @@ pub async fn from_addr(
));
}
return Ok(Arc::new(
SledPathInfoService::new(url.path().into(), blob_service, directory_service)
SledPathInfoService::new(url.path(), blob_service, directory_service)
.map_err(|e| Error::StorageError(e.to_string()))?,
));
} else if url.scheme() == "nix+http" || url.scheme() == "nix+https" {

View file

@ -3,7 +3,7 @@ use crate::nar::calculate_size_and_sha256;
use crate::proto::PathInfo;
use futures::{stream::iter, Stream};
use prost::Message;
use std::{path::PathBuf, pin::Pin, sync::Arc};
use std::{path::Path, pin::Pin, sync::Arc};
use tonic::async_trait;
use tracing::warn;
use tvix_castore::proto as castorepb;
@ -21,8 +21,8 @@ pub struct SledPathInfoService {
}
impl SledPathInfoService {
pub fn new(
p: PathBuf,
pub fn new<P: AsRef<Path>>(
p: P,
blob_service: Arc<dyn BlobService>,
directory_service: Arc<dyn DirectoryService>,
) -> Result<Self, sled::Error> {