diff --git a/docs/design/copy-tracking.md b/docs/design/copy-tracking.md index d490a9581..24e0d27e7 100644 --- a/docs/design/copy-tracking.md +++ b/docs/design/copy-tracking.md @@ -71,7 +71,7 @@ pub struct CopyRecordOpts { // TODO: Probably something for git similarity detection } -pub type CopyRecordStream = Pin>>>; +pub type CopyRecordStream = BoxStream>; pub trait Backend { /// Get all copy records for `paths` in the dag range `roots..heads`. diff --git a/lib/src/merged_tree.rs b/lib/src/merged_tree.rs index 2ddb55ce9..a0986e4f6 100644 --- a/lib/src/merged_tree.rs +++ b/lib/src/merged_tree.rs @@ -22,8 +22,9 @@ use std::sync::Arc; use std::task::{Context, Poll}; use std::{iter, vec}; -use futures::stream::StreamExt; -use futures::{Future, Stream, TryStreamExt}; +use futures::future::BoxFuture; +use futures::stream::{BoxStream, StreamExt}; +use futures::{Stream, TryStreamExt}; use itertools::Itertools; use crate::backend; @@ -407,15 +408,12 @@ impl MergedTree { /// Type alias for the result from `MergedTree::diff_stream()`. We use a /// `Stream` instead of an `Iterator` so high-latency backends (e.g. cloud-based /// ones) can fetch trees asynchronously. -pub type TreeDiffStream<'matcher> = Pin< - Box< - dyn Stream< - Item = ( - RepoPathBuf, - BackendResult<(MergedTreeValue, MergedTreeValue)>, - ), - > + 'matcher, - >, +pub type TreeDiffStream<'matcher> = BoxStream< + 'matcher, + ( + RepoPathBuf, + BackendResult<(MergedTreeValue, MergedTreeValue)>, + ), >; fn all_tree_basenames(trees: &Merge) -> impl Iterator { @@ -902,7 +900,7 @@ pub struct TreeDiffStreamImpl<'matcher> { #[allow(clippy::type_complexity)] pending_trees: VecDeque<( RepoPathBuf, - Pin> + 'matcher>>, + BoxFuture<'matcher, BackendResult<(MergedTree, MergedTree)>>, )>, /// The maximum number of trees to request concurrently. However, we do the /// accounting per path, so for there will often be twice as many pending