use std::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum PipelinePhase {
Preflight,
Generation,
Distribution,
ModeChoice,
Assignment,
}
impl fmt::Display for PipelinePhase {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let s = match self {
PipelinePhase::Preflight => "preflight",
PipelinePhase::Generation => "generation",
PipelinePhase::Distribution => "distribution",
PipelinePhase::ModeChoice => "mode_choice",
PipelinePhase::Assignment => "assignment",
};
write!(f, "{}", s)
}
}
#[derive(Debug, Clone, Copy)]
pub struct ProgressEvent {
pub phase: PipelinePhase,
pub feedback_iter: usize,
pub feedback_total: usize,
}
impl ProgressEvent {
pub fn single(phase: PipelinePhase) -> Self {
ProgressEvent { phase, feedback_iter: 0, feedback_total: 0 }
}
pub fn feedback(phase: PipelinePhase, iter: usize, total: usize) -> Self {
ProgressEvent { phase, feedback_iter: iter, feedback_total: total }
}
}