diff --git a/src/iterators/merge.rs b/src/iterators/merge.rs index fe75ce7..36f7109 100644 --- a/src/iterators/merge.rs +++ b/src/iterators/merge.rs @@ -18,7 +18,7 @@ mod heap; /// iterators, prefer the one with smaller index. pub type MergeIterator = NoDuplication>; -pub async fn create_merge_iter(iters: impl Stream>) -> MergeIterator +pub async fn create_merge_iter(iters: impl Stream) -> MergeIterator where Item: Ord + Debug, I: Stream> + Unpin, @@ -27,7 +27,7 @@ where } pub async fn create_merge_iter_from_non_empty_iters( - iters: impl Stream>>, + iters: impl Stream>, ) -> MergeIterator where Item: Ord + Debug, @@ -49,7 +49,7 @@ where I: Stream> + Unpin, Item: Ord + Debug, { - pub async fn create(iters: impl Stream>) -> Self { + pub async fn create(iters: impl Stream) -> Self { let iters = iters .map(NonEmptyStream::try_new) .flat_map(FutureExt::into_stream) @@ -57,9 +57,7 @@ where Self::from_non_empty_iters(iters).await } - pub async fn from_non_empty_iters( - iters: impl Stream>>, - ) -> Self { + pub async fn from_non_empty_iters(iters: impl Stream>) -> Self { let iters: BinaryHeap<_> = iters .enumerate() .map(|(index, iter)| HeapWrapper { index, iter }) diff --git a/src/iterators/merge/heap.rs b/src/iterators/merge/heap.rs index 54240d9..492ce9d 100644 --- a/src/iterators/merge/heap.rs +++ b/src/iterators/merge/heap.rs @@ -3,7 +3,7 @@ use std::cmp; pub(super) struct HeapWrapper { pub index: usize, - pub iter: NonEmptyStream>, + pub iter: NonEmptyStream, } impl HeapWrapper diff --git a/src/memtable/iterator.rs b/src/memtable/iterator.rs index d9eca7a..2f499f0 100644 --- a/src/memtable/iterator.rs +++ b/src/memtable/iterator.rs @@ -29,8 +29,8 @@ type SkipMapRangeIter<'a> = map::Range<'a, [u8], BytesBound<'a>, Bytes, Bytes>; type SkipMapRangeEntry<'a> = map::Entry<'a, Bytes, Bytes>; -pub type NonEmptyMemTableIterRef<'a> = NonEmptyStream>>; -pub type MaybeEmptyMemTableIterRef<'a> = MaybeEmptyStream>>; +pub type NonEmptyMemTableIterRef<'a> = NonEmptyStream>; +pub type MaybeEmptyMemTableIterRef<'a> = MaybeEmptyStream>; #[cfg(test)] mod test { diff --git a/src/memtable/mutable.rs b/src/memtable/mutable.rs index 7c50605..2169054 100644 --- a/src/memtable/mutable.rs +++ b/src/memtable/mutable.rs @@ -111,26 +111,15 @@ impl MemTable { lower: Bound<&'a [u8]>, upper: Bound<&'a [u8]>, ) -> Result> { - let iter = foo(&self.map, lower, upper); - // let range = (lower, upper); - // let iter = self.map.range(range); + let iter = self.map.range(BytesBound { + start: lower, + end: upper, + }); let iter = new_memtable_iter(iter); - NonEmptyStream::try_new(Box::new(iter)).await + NonEmptyStream::try_new(iter).await } } -fn foo<'a, 'b>( - m: &'a SkipMap, - lower: Bound<&'b [u8]>, - upper: Bound<&'b [u8]>, -) -> Range<'a, [u8], BytesBound<'b>, Bytes, Bytes> { - let iter = m.range(BytesBound { - start: lower, - end: upper, - }); - iter -} - #[cfg(test)] impl MemTable { pub fn for_testing_put_slice(&self, key: &[u8], value: &[u8]) -> Result<()> { diff --git a/src/sst/sstables.rs b/src/sst/sstables.rs index b74d37e..3c433f6 100644 --- a/src/sst/sstables.rs +++ b/src/sst/sstables.rs @@ -98,7 +98,7 @@ where None } else { let iter = SsTableIterator::scan(table, lower, upper); - NonEmptyStream::try_new(Box::new(iter)).await.ok().flatten() + NonEmptyStream::try_new(iter).await.ok().flatten() } } }); @@ -106,14 +106,10 @@ where }; let levels = { - let iters = self - .levels - .iter() - .filter_map(move |(_, ids)| { - let tables = ids.iter().map(|id| self.sstables.get(id).unwrap()); - scan_sst_concat(tables, lower, upper).ok() - }) - .map(Box::new); + let iters = self.levels.iter().filter_map(move |(_, ids)| { + let tables = ids.iter().map(|id| self.sstables.get(id).unwrap()); + scan_sst_concat(tables, lower, upper).ok() + }); let iters = stream::iter(iters); create_merge_iter(iters).await };