From 6fbcbf4dbcaa70dfc6788ff39f364a0fc5a46636 Mon Sep 17 00:00:00 2001 From: Chris Mikkelson Date: Sun, 6 Apr 2025 20:26:29 -0500 Subject: [PATCH] Streamline sorter 'write' method again. --- src/sorter.rs | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) 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) { -- 2.50.1