-use crate::{Entry, Merger, Reader, Source, Writer};
+use crate::{merge::MergeSource, Entry, Merger, Reader, Source, Writer};
use memmap::Mmap;
use std::cell::Cell;
self.batch_size += esize;
}
- pub fn source(&mut self) -> impl Source<'_, Item = Entry> {
+ pub fn source<'a>(mut self) -> MergeSource<'a, Merger<Reader<Mmap>>, 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<W: std::io::Write>(mut self, mut w: Writer<W>) {
- 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<W: std::io::Write>(self, mut w: Writer<W>) {
+ self.source().iter().for_each(|e| w.add(e).unwrap());
}
fn write_chunk(&mut self) {