diff options
author | Connor Brewster <cbrewster@hey.com> | 2024-01-20T22·25-0600 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2024-01-21T19·41+0000 |
commit | 4e341fb5d915ea9e4ae1b8257972ef69437f3ed0 (patch) | |
tree | 6aeb960ced3e1c05edbc0c650ca608508cf0d920 /tvix/store/src/pathinfoservice | |
parent | 56ba7a72d80bc050ef6a7d9031306ee0ccbf8e0a (diff) |
chore(tvix/store): Use BoxStream type alias r/7435
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>
Diffstat (limited to 'tvix/store/src/pathinfoservice')
-rw-r--r-- | tvix/store/src/pathinfoservice/fs/mod.rs | 5 | ||||
-rw-r--r-- | tvix/store/src/pathinfoservice/grpc.rs | 5 | ||||
-rw-r--r-- | tvix/store/src/pathinfoservice/memory.rs | 5 | ||||
-rw-r--r-- | tvix/store/src/pathinfoservice/mod.rs | 5 | ||||
-rw-r--r-- | tvix/store/src/pathinfoservice/nix_http.rs | 9 | ||||
-rw-r--r-- | tvix/store/src/pathinfoservice/sled.rs | 7 |
6 files changed, 15 insertions, 21 deletions
diff --git a/tvix/store/src/pathinfoservice/fs/mod.rs b/tvix/store/src/pathinfoservice/fs/mod.rs index b7657d638402..45d59fd0bcb8 100644 --- a/tvix/store/src/pathinfoservice/fs/mod.rs +++ b/tvix/store/src/pathinfoservice/fs/mod.rs @@ -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 diff --git a/tvix/store/src/pathinfoservice/grpc.rs b/tvix/store/src/pathinfoservice/grpc.rs index 575491333142..4e15a5bb0b5b 100644 --- a/tvix/store/src/pathinfoservice/grpc.rs +++ b/tvix/store/src/pathinfoservice/grpc.rs @@ -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! { diff --git a/tvix/store/src/pathinfoservice/memory.rs b/tvix/store/src/pathinfoservice/memory.rs index 9f657a9c625b..f8435dbbf809 100644 --- a/tvix/store/src/pathinfoservice/memory.rs +++ b/tvix/store/src/pathinfoservice/memory.rs @@ -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. diff --git a/tvix/store/src/pathinfoservice/mod.rs b/tvix/store/src/pathinfoservice/mod.rs index 3bd0ef206998..55ada92b7e88 100644 --- a/tvix/store/src/pathinfoservice/mod.rs +++ b/tvix/store/src/pathinfoservice/mod.rs @@ -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>>; } diff --git a/tvix/store/src/pathinfoservice/nix_http.rs b/tvix/store/src/pathinfoservice/nix_http.rs index 4929355c6dde..7b4130fcae27 100644 --- a/tvix/store/src/pathinfoservice/nix_http.rs +++ b/tvix/store/src/pathinfoservice/nix_http.rs @@ -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(), diff --git a/tvix/store/src/pathinfoservice/sled.rs b/tvix/store/src/pathinfoservice/sled.rs index d4d2dedd0061..7b6d7fd7abcd 100644 --- a/tvix/store/src/pathinfoservice/sled.rs +++ b/tvix/store/src/pathinfoservice/sled.rs @@ -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 |