1use thiserror::Error;
2
3pub type Result<T> = std::result::Result<T, McvError>;
4
5#[derive(Debug, Error)]
6pub enum McvError {
7 #[cfg(feature = "opencv")]
8 #[error("OpenCV error: {0}")]
9 OpenCv(#[from] opencv::Error),
10 #[error("I/O error: {0}")]
11 Io(#[from] std::io::Error),
12 #[error("invalid image: {0}")]
13 InvalidImage(String),
14 #[error("invalid ROI: {0}")]
15 InvalidRoi(String),
16 #[error("invalid threshold {0}; expected [0, 1]")]
17 InvalidThreshold(f64),
18 #[error("invalid color: {0}")]
19 InvalidColor(String),
20 #[error("max_count must be positive")]
21 InvalidMaxCount,
22 #[cfg(feature = "ocr")]
23 #[error("OCR error: {0}")]
24 Ocr(String),
25 #[cfg(feature = "ocr")]
26 #[error("missing OCR model file: {0}")]
27 MissingOcrModel(String),
28 #[cfg(feature = "ocr")]
29 #[error("default OCR models are not configured; call set_default_ocr_models first")]
30 MissingDefaultOcrModels,
31 #[cfg(feature = "ocr")]
32 #[error("thread_count must be positive")]
33 InvalidThreadCount,
34 #[cfg(feature = "image-crate")]
35 #[error("image decode error: {0}")]
36 Image(#[from] image::ImageError),
37}