use super::computation::ComputationId;
#[derive(Debug, thiserror::Error)]
pub enum ComputationError {
#[error("missing dependency: {0}")]
MissingDependency(ComputationId),
#[error("invalid data: {dependency} - {reason}")]
InvalidDependencyData {
dependency: ComputationId,
reason: String,
},
#[error("type mismatch for computation {0}")]
TypeMismatch(ComputationId),
#[error("computation timed out after {elapsed_ms}ms")]
Timeout {
elapsed_ms: u64,
},
#[error("no valid result: {reason}")]
NoValidResult {
reason: String,
},
#[error("simulation failed: {0}")]
SimulationFailed(String),
#[error("internal error: {0}")]
Internal(String),
#[error("invalid configuration: {0}")]
InvalidConfiguration(String),
#[error("all {attempted} computations failed for {computation_id}")]
TotalFailure {
computation_id: ComputationId,
attempted: usize,
},
}