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:
parent
56ba7a72d8
commit
4e341fb5d9
15 changed files with 44 additions and 67 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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! {
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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>>;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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(),
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue