use std::fmt;
use vortex_array::ArrayRef;
use vortex_error::VortexResult;
use vortex_io::request::IoBatch;
use vortex_io::request::IoConsumer;
pub use crate::planning::planner::State;
pub enum MorselOutput {
Done,
Continue,
NeedsIO(IoBatch),
Batch(ArrayRef),
}
pub trait Morsel: IoConsumer + Send {
fn state(&self) -> State;
fn compute(&mut self) -> VortexResult<MorselOutput>;
}
impl fmt::Debug for MorselOutput {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::Done => f.write_str("Done"),
Self::Continue => f.write_str("Continue"),
Self::NeedsIO(batch) => f.debug_tuple("NeedsIO").field(batch).finish(),
Self::Batch(array) => f.debug_tuple("Batch").field(&array.len()).finish(),
}
}
}