1use std::io;
2
3#[derive(Debug, thiserror::Error)]
5pub enum Error {
6 #[error("I/O error: {0}")]
7 Io(#[from] io::Error),
8
9 #[error("unsupported file type: {0}")]
10 UnsupportedFileType(String),
11
12 #[error("invalid data: {0}")]
13 InvalidData(String),
14
15 #[error("tag not found: {0}")]
16 TagNotFound(String),
17
18 #[error("invalid TIFF header")]
19 InvalidTiffHeader,
20
21 #[error("invalid EXIF data: {0}")]
22 InvalidExif(String),
23
24 #[error("invalid IPTC data: {0}")]
25 InvalidIptc(String),
26
27 #[error("invalid XMP data: {0}")]
28 InvalidXmp(String),
29
30 #[error("truncated data: expected {expected} bytes, got {actual}")]
31 TruncatedData { expected: usize, actual: usize },
32
33 #[error("value conversion error: {0}")]
34 ConversionError(String),
35}
36
37pub type Result<T> = std::result::Result<T, Error>;