use crate::channels::operator_io::Output;
use super::{BuildContext, OperatorContext, RunnableOperator};
pub trait AppendableOperator<K, V, T> {
fn get_output_mut(&mut self) -> &mut Output<K, V, T>;
fn into_buildable(self: Box<Self>) -> Box<dyn BuildableOperator>;
}
pub trait BuildableOperator {
fn into_runnable(self: Box<Self>, context: &mut BuildContext) -> RunnableOperator;
fn get_name(&self) -> &str;
fn get_id(&self) -> u64;
}
pub trait Operator {
fn step(&mut self, context: &mut OperatorContext);
fn has_queued_work(&self) -> bool;
fn is_finalized(&self) -> bool;
fn is_suspended(&self) -> bool;
}