codex_utils_image/
error.rs

1use image::ImageError;
2use image::ImageFormat;
3use std::path::PathBuf;
4use thiserror::Error;
5
6#[derive(Debug, Error)]
7pub enum ImageProcessingError {
8    #[error("failed to read image at {path}: {source}")]
9    Read {
10        path: PathBuf,
11        #[source]
12        source: std::io::Error,
13    },
14    #[error("failed to decode image at {path}: {source}")]
15    Decode {
16        path: PathBuf,
17        #[source]
18        source: image::ImageError,
19    },
20    #[error("failed to encode image as {format:?}: {source}")]
21    Encode {
22        format: ImageFormat,
23        #[source]
24        source: image::ImageError,
25    },
26}
27
28impl ImageProcessingError {
29    pub fn is_invalid_image(&self) -> bool {
30        matches!(
31            self,
32            ImageProcessingError::Decode {
33                source: ImageError::Decoding(_),
34                ..
35            }
36        )
37    }
38}