Skip to main content

wasmedge_nn/
error.rs

1use thiserror::Error;
2
3/// Possible errors while interacting with [WasiNnCtx].
4#[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}