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>;