use thiserror::Error;
#[derive(Debug, Clone, Error, PartialEq, Eq)]
pub enum BatchOutcomeBuildError {
#[error(
"completed task count must not exceed declared task count: task_count {task_count}, completed_count {completed_count}"
)]
CompletedCountExceeded {
task_count: usize,
completed_count: usize,
},
#[error(
"failed and panicked task counts must not overflow: failed_count {failed_count}, panicked_count {panicked_count}"
)]
FailureCountOverflow {
failed_count: usize,
panicked_count: usize,
},
#[error(
"terminal task counts must not overflow: succeeded_count {succeeded_count}, failure_count {failure_count}"
)]
TerminalCountOverflow {
succeeded_count: usize,
failure_count: usize,
},
#[error(
"completed task count must equal succeeded + failed + panicked counts: completed_count {completed_count}, terminal_count {terminal_count}"
)]
TerminalCountMismatch {
completed_count: usize,
terminal_count: usize,
succeeded_count: usize,
failed_count: usize,
panicked_count: usize,
},
#[error(
"failure detail count must equal failed + panicked counts: expected {expected}, actual {actual}"
)]
FailureDetailCountMismatch {
expected: usize,
actual: usize,
},
#[error(
"failure index must be less than declared task count: index {index}, task_count {task_count}"
)]
FailureIndexOutOfRange {
index: usize,
task_count: usize,
},
#[error("failure index must be unique: index {index}")]
DuplicateFailureIndex {
index: usize,
},
#[error(
"failure detail variants must match failed_count and panicked_count: expected_failed {expected_failed}, actual_failed {actual_failed}, expected_panicked {expected_panicked}, actual_panicked {actual_panicked}"
)]
FailureVariantCountMismatch {
expected_failed: usize,
actual_failed: usize,
expected_panicked: usize,
actual_panicked: usize,
},
}