Skip to main content

warden_vision/
error.rs

1//! Shared error type for `warden-vision`.
2
3use thiserror::Error;
4
5/// Errors produced by `warden-vision` operations.
6#[derive(Debug, Error)]
7pub enum Error {
8    /// A vector/array had an unexpected length or shape.
9    #[error("shape mismatch: expected {expected}, got {actual}")]
10    ShapeMismatch {
11        /// The expected length or shape, rendered as text.
12        expected: String,
13        /// The actual length or shape, rendered as text.
14        actual: String,
15    },
16
17    /// A geometric primitive (polygon, line, etc.) was degenerate or invalid.
18    #[error("invalid geometry: {0}")]
19    InvalidGeometry(String),
20
21    /// The linear assignment solver failed to produce an assignment.
22    #[error("assignment solver failed: {0}")]
23    AssignmentFailed(String),
24
25    /// An annotation backend (e.g. OpenCV) reported an error while drawing.
26    #[error("annotation backend error: {0}")]
27    Backend(String),
28
29    /// An I/O error while reading or writing a dataset file.
30    #[error("I/O error: {0}")]
31    Io(#[from] std::io::Error),
32
33    /// A dataset file (COCO JSON, YOLO label, Pascal VOC XML, ...) was
34    /// malformed or failed to parse.
35    #[error("parse error: {0}")]
36    Parse(String),
37}
38
39/// Convenience alias for `Result<T, warden_vision::Error>`.
40pub type Result<T> = std::result::Result<T, Error>;