use std::io::{self};
use crate::{orderer::Orderer, run::BoxedRun};
pub mod sequential;
#[cfg(any(feature = "parallel_sort", feature = "docsrs"))]
pub mod threaded;
pub struct FinalizeContents<T, O, F> {
pub tapes: Vec<BoxedRun<T>>,
pub orderer: O,
pub sort_func: F,
}
pub trait BufferCleaner<T, O, F>
where
O: Orderer<T>,
F: FnMut(&O, &mut [T]),
{
fn clean_buffer(&mut self, buffer: &mut Vec<T>) -> io::Result<()>;
fn get_buffer(&mut self) -> Vec<T>;
fn finalize(self) -> io::Result<FinalizeContents<T, O, F>>;
}