From: Chris Mikkelson Date: Mon, 7 Apr 2025 01:26:29 +0000 (-0500) Subject: Streamline sorter 'write' method again. X-Git-Url: https://git.mikk.net/?a=commitdiff_plain;h=6fbcbf4dbcaa70dfc6788ff39f364a0fc5a46636;p=mtbl-rs Streamline sorter 'write' method again. --- diff --git a/src/sorter.rs b/src/sorter.rs index 367c26e..fe4073f 100644 --- a/src/sorter.rs +++ b/src/sorter.rs @@ -1,4 +1,4 @@ -use crate::{Entry, Merger, Reader, Source, Writer}; +use crate::{merge::MergeSource, Entry, Merger, Reader, Source, Writer}; use memmap::Mmap; use std::cell::Cell; @@ -35,21 +35,15 @@ where self.batch_size += esize; } - pub fn source(&mut self) -> impl Source<'_, Item = Entry> { + pub fn source<'a>(mut self) -> MergeSource<'a, Merger>, F> { if !self.batch.get_mut().is_empty() { self.write_chunk(); } - Merger::from(self.readers.clone()).merge_func(&self.merge_func) + Merger::from(self.readers).merge_func(self.merge_func) } - pub fn write(mut self, mut w: Writer) { - if !self.batch.get_mut().is_empty() { - self.write_chunk(); - } - let m = Merger::from(self.readers).merge_func(self.merge_func); - m.iter().for_each(|e| { - w.add(e).unwrap(); - }); + pub fn write(self, mut w: Writer) { + self.source().iter().for_each(|e| w.add(e).unwrap()); } fn write_chunk(&mut self) {