Skip to main content

philips_isyntax_rs/
errors.rs

1//! This module contains errors defined in this library
2//!
3
4use cxx::Exception;
5use std::str::Utf8Error;
6use thiserror::Error;
7
8/// Enum defining all possible error when manipulating Philips struct
9#[derive(Error, Debug)]
10pub enum PhilipsSlideError {
11    /// CxxString to &str conversion error
12    #[error(transparent)]
13    StringConversionError(#[from] Utf8Error),
14    /// PhilipsSlide lib error
15    #[error(transparent)]
16    CoreError(#[from] Exception),
17    /// NullPtr Error
18    #[error("Null pointer error")]
19    NullPtrError,
20    /// Error while creating Image from vector
21    #[cfg(feature = "image")]
22    #[error(transparent)]
23    ImageError(#[from] ImageError),
24    #[error(transparent)]
25    DimensionsRangeToSizeError(#[from] DimensionsRangeToSizeError),
26}
27
28#[cfg(feature = "image")]
29#[derive(Error, Debug)]
30pub enum ImageError {
31    /// Error while creating Image from vector
32    #[error(transparent)]
33    Image(#[from] image::ImageError),
34    /// PhilipsSlide lib error
35    #[error("{0}")]
36    Other(String),
37}
38
39#[derive(Error, Debug)]
40pub enum DimensionsRangeToSizeError {
41    #[error("Step X is null")]
42    NullStepX,
43    #[error("Step Y is null")]
44    NullStepY,
45    #[error("End X is smaller than Start X")]
46    NegativeWidth,
47    #[error("End Y is smaller than Start Y")]
48    NegativeHeight,
49}