Skip to main content

asset_importer_rs_post_process/
error.rs

1use std::{error::Error, fmt::Display};
2
3#[cfg(feature = "flip-uvs")]
4use crate::steps::flip_uvs::FlipUVsError;
5#[cfg(feature = "gen-normals")]
6use crate::steps::gen_normals::GenNormalsError;
7#[cfg(feature = "gen-smooth-normals")]
8use crate::steps::gen_smooth_normals::GenSmoothNormalsError;
9
10#[non_exhaustive]
11#[derive(Debug)]
12pub enum AiPostProcessError {
13    #[cfg(feature = "gen-normals")]
14    GenNormalsError(GenNormalsError),
15    #[cfg(feature = "gen-smooth-normals")]
16    GenSmoothNormalsError(GenSmoothNormalsError),
17    #[cfg(feature = "flip-uvs")]
18    FlipUVsError(FlipUVsError),
19
20    PostProcessError(String),
21}
22
23impl Display for AiPostProcessError {
24    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
25        match self {
26            AiPostProcessError::PostProcessError(error) => write!(f, "PostProcessError: {}", error),
27            #[cfg(feature = "gen-normals")]
28            AiPostProcessError::GenNormalsError(error) => write!(f, "GenNormalsError: {}", error),
29            #[cfg(feature = "gen-smooth-normals")]
30            AiPostProcessError::GenSmoothNormalsError(error) => {
31                write!(f, "GenSmoothNormalsError: {}", error)
32            }
33            #[cfg(feature = "flip-uvs")]
34            AiPostProcessError::FlipUVsError(error) => {
35                write!(f, "FlipUVsError: {}", error)
36            }
37        }
38    }
39}
40impl Error for AiPostProcessError {}
41
42impl From<String> for AiPostProcessError {
43    fn from(error: String) -> Self {
44        AiPostProcessError::PostProcessError(error)
45    }
46}
47
48#[cfg(feature = "flip-uvs")]
49impl From<FlipUVsError> for AiPostProcessError {
50    fn from(error: FlipUVsError) -> Self {
51        AiPostProcessError::FlipUVsError(error)
52    }
53}
54
55#[cfg(feature = "gen-normals")]
56impl From<GenNormalsError> for AiPostProcessError {
57    fn from(error: GenNormalsError) -> Self {
58        AiPostProcessError::PostProcessError(error.to_string())
59    }
60}
61
62#[cfg(feature = "gen-smooth-normals")]
63impl From<GenSmoothNormalsError> for AiPostProcessError {
64    fn from(error: GenSmoothNormalsError) -> Self {
65        AiPostProcessError::PostProcessError(error.to_string())
66    }
67}