1use thiserror::Error;
2
3#[derive(Debug, Error)]
5pub enum WasiNnError {
6 #[error("Failed while loading model file: {0}")]
7 InvalidPath(#[from] std::io::Error),
8 #[error("backend error")]
9 BackendError(#[from] BackendError),
10 #[error("usage error")]
11 UsageError(#[from] UsageError),
12}
13
14#[derive(Debug, Error)]
15pub enum UsageError {
16 #[error("Invalid context; has the load function been called?")]
17 InvalidContext,
18 #[error("Only OpenVINO's IR is currently supported, passed encoding: {0:?}")]
19 InvalidEncoding(wasi_nn::GraphEncoding),
20 #[error("OpenVINO expects only two buffers (i.e. [ir, weights]), passed: {0}")]
21 InvalidNumberOfBuilders(u32),
22 #[error("Invalid graph handle; has it been loaded?")]
23 InvalidGraphHandle,
24 #[error("Invalid execution context handle; has it been initialized?")]
25 InvalidExecutionContextHandle,
26 #[error("Not enough memory to copy tensor data of size: {0}")]
27 NotEnoughMemory(u32),
28}
29
30#[derive(Debug, Error)]
31pub enum BackendError {
32 #[error("Failed while loading model file: {0}")]
33 InvalidPath(#[from] std::io::Error),
34 #[error("Failed while loading model: {0}")]
35 ModelLoad(String),
36 #[error("Failed while setting input tensor: {0}")]
37 SetInput(String),
38 #[error("Failed while performing the inference: {0}")]
39 Compute(String),
40 #[error("Failed while getting output bytes: {0}")]
41 GetOutput(String),
42 #[error("The backend expects {0} buffers, passed {1}")]
43 InvalidNumberOfBuilders(u32, u32),
44 #[error("Not enough memory to copy tensor data of size: {0}")]
45 NotEnoughMemory(usize),
46}
47
48#[derive(Debug, Error)]
49pub enum CvError {
50 #[error("Failed while")]
51 ProcessImage(#[from] image::ImageError),
52 #[error("Failed to open image file")]
53 LoadImage(#[from] std::io::Error),
54}