#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum RunState {
Scheduled,
Ready,
Leased,
Running,
RetryWait,
Suspended,
Completed,
Failed,
Canceled,
}
impl RunState {
pub fn is_terminal(&self) -> bool {
matches!(self, RunState::Completed | RunState::Failed | RunState::Canceled)
}
}
impl std::fmt::Display for RunState {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let name = match self {
RunState::Scheduled => "scheduled",
RunState::Ready => "ready",
RunState::Leased => "leased",
RunState::Running => "running",
RunState::RetryWait => "retry_wait",
RunState::Suspended => "suspended",
RunState::Completed => "completed",
RunState::Failed => "failed",
RunState::Canceled => "canceled",
};
write!(f, "{name}")
}
}