chore(tvix/store): Use BoxStream type alias

The BoxStream type alias is a more concise and easier to read than
the full `Pin<Box<dyn Stream<Item = ...> + Send + ...>>` type.

Change-Id: I5b7bccfd066ded5557e01f7895f4cf5c4a33bd44
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10677
Reviewed-by: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
Autosubmit: Connor Brewster <cbrewster@hey.com>
This commit is contained in:
Connor Brewster 2024-01-20 16:25:39 -06:00 committed by clbot
parent 56ba7a72d8
commit 4e341fb5d9
15 changed files with 44 additions and 67 deletions

View file

@ -1,6 +1,5 @@
use futures::Stream;
use futures::stream::BoxStream;
use futures::StreamExt;
use std::pin::Pin;
use tonic::async_trait;
use tvix_castore::fs::{RootNodes, TvixStoreFs};
use tvix_castore::proto as castorepb;
@ -66,7 +65,7 @@ where
}))
}
fn list(&self) -> Pin<Box<dyn Stream<Item = Result<castorepb::node::Node, Error>> + Send>> {
fn list(&self) -> BoxStream<Result<castorepb::node::Node, Error>> {
Box::pin(self.0.as_ref().list().map(|result| {
result.map(|path_info| {
path_info

View file

@ -1,8 +1,7 @@
use super::PathInfoService;
use crate::proto::{self, ListPathInfoRequest, PathInfo};
use async_stream::try_stream;
use futures::Stream;
use std::pin::Pin;
use futures::stream::BoxStream;
use tonic::{async_trait, transport::Channel, Code};
use tvix_castore::{proto as castorepb, Error};
@ -87,7 +86,7 @@ impl PathInfoService for GRPCPathInfoService {
Ok((path_info.nar_size, nar_sha256))
}
fn list(&self) -> Pin<Box<dyn Stream<Item = Result<PathInfo, Error>> + Send>> {
fn list(&self) -> BoxStream<'static, Result<PathInfo, Error>> {
let mut grpc_client = self.grpc_client.clone();
let stream = try_stream! {

View file

@ -1,9 +1,8 @@
use super::PathInfoService;
use crate::{nar::calculate_size_and_sha256, proto::PathInfo};
use futures::{stream::iter, Stream};
use futures::stream::{iter, BoxStream};
use std::{
collections::HashMap,
pin::Pin,
sync::{Arc, RwLock},
};
use tonic::async_trait;
@ -71,7 +70,7 @@ where
.map_err(|e| Error::StorageError(e.to_string()))
}
fn list(&self) -> Pin<Box<dyn Stream<Item = Result<PathInfo, Error>> + Send>> {
fn list(&self) -> BoxStream<'static, Result<PathInfo, Error>> {
let db = self.db.read().unwrap();
// Copy all elements into a list.

View file

@ -7,8 +7,7 @@ mod sled;
#[cfg(any(feature = "fuse", feature = "virtiofs"))]
mod fs;
use futures::Stream;
use std::pin::Pin;
use futures::stream::BoxStream;
use tonic::async_trait;
use tvix_castore::proto as castorepb;
use tvix_castore::Error;
@ -49,5 +48,5 @@ pub trait PathInfoService: Send + Sync {
/// and the box allows different underlying stream implementations to be returned since
/// Rust doesn't support this as a generic in traits yet. This is the same thing that
/// [async_trait] generates, but for streams instead of futures.
fn list(&self) -> Pin<Box<dyn Stream<Item = Result<PathInfo, Error>> + Send>>;
fn list(&self) -> BoxStream<'static, Result<PathInfo, Error>>;
}

View file

@ -1,10 +1,7 @@
use std::{
io::{self, BufRead, Read, Write},
pin::Pin,
};
use std::io::{self, BufRead, Read, Write};
use data_encoding::BASE64;
use futures::{Stream, TryStreamExt};
use futures::{stream::BoxStream, TryStreamExt};
use nix_compat::{
narinfo::{self, NarInfo},
nixbase32,
@ -270,7 +267,7 @@ where
))
}
fn list(&self) -> Pin<Box<dyn Stream<Item = Result<PathInfo, Error>> + Send>> {
fn list(&self) -> BoxStream<'static, Result<PathInfo, Error>> {
Box::pin(futures::stream::once(async {
Err(Error::InvalidRequest(
"list not supported for this backend".to_string(),

View file

@ -1,9 +1,10 @@
use super::PathInfoService;
use crate::nar::calculate_size_and_sha256;
use crate::proto::PathInfo;
use futures::{stream::iter, Stream};
use futures::stream::iter;
use futures::stream::BoxStream;
use prost::Message;
use std::{path::Path, pin::Pin};
use std::path::Path;
use tonic::async_trait;
use tracing::warn;
use tvix_castore::proto as castorepb;
@ -112,7 +113,7 @@ where
.map_err(|e| Error::StorageError(e.to_string()))
}
fn list(&self) -> Pin<Box<dyn Stream<Item = Result<PathInfo, Error>> + Send>> {
fn list(&self) -> BoxStream<'static, Result<PathInfo, Error>> {
Box::pin(iter(self.db.iter().values().map(|v| match v {
Ok(data) => {
// we retrieved some bytes