Skip to main content

renderbox_sdk/
error.rs

1use std::fmt;
2
3#[derive(Debug)]
4pub enum Error {
5    InvalidParam {
6        param: String,
7        value: String,
8        constraint: String,
9    },
10    SortMismatch {
11        expected: &'static str,
12        actual: &'static str,
13    },
14    MissingParam {
15        op: String,
16        param: String,
17    },
18    UnknownOp {
19        name: String,
20    },
21    BuildFailure {
22        message: String,
23    },
24    ExecuteFailure {
25        source: anyhow::Error,
26    },
27}
28
29impl fmt::Display for Error {
30    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
31        match self {
32            Error::InvalidParam {
33                param,
34                value,
35                constraint,
36            } => {
37                write!(
38                    f,
39                    "invalid value {value:?} for parameter {param:?}: {constraint}"
40                )
41            }
42            Error::SortMismatch { expected, actual } => {
43                write!(f, "sort mismatch: expected {expected}, got {actual}")
44            }
45            Error::MissingParam { op, param } => {
46                write!(f, "missing required parameter {param:?} for op {op:?}")
47            }
48            Error::UnknownOp { name } => {
49                write!(f, "unknown op: {name:?}")
50            }
51            Error::BuildFailure { message } => {
52                write!(f, "plan build failed: {message}")
53            }
54            Error::ExecuteFailure { source } => {
55                write!(f, "execution failed: {source}")
56            }
57        }
58    }
59}
60
61impl std::error::Error for Error {}
62
63pub type Result<T> = std::result::Result<T, Error>;