deep_causality/errors/
model_build_error.rs

1/*
2 * SPDX-License-Identifier: MIT
3 * Copyright (c) "2025" . The DeepCausality Authors and Contributors. All Rights Reserved.
4 */
5use crate::{ModelGenerativeError, ModelValidationError};
6use std::error::Error;
7use std::fmt;
8use std::fmt::{Display, Formatter};
9
10#[derive(Debug, Clone, Hash, Eq, PartialEq)]
11pub enum ModelBuildError {
12    GenerationFailed(ModelGenerativeError),
13    ValidationFailed(ModelValidationError),
14}
15
16impl Error for ModelBuildError {
17    fn source(&self) -> Option<&(dyn Error + 'static)> {
18        match self {
19            ModelBuildError::GenerationFailed(e) => Some(e),
20            ModelBuildError::ValidationFailed(e) => Some(e),
21        }
22    }
23}
24
25impl Display for ModelBuildError {
26    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
27        match self {
28            ModelBuildError::GenerationFailed(e) => {
29                write!(f, "The generation process failed: {e}")
30            }
31            ModelBuildError::ValidationFailed(e) => {
32                write!(
33                    f,
34                    "The generative output was invalid for model construction: {e}"
35                )
36            }
37        }
38    }
39}
40
41impl From<ModelGenerativeError> for ModelBuildError {
42    fn from(value: ModelGenerativeError) -> Self {
43        ModelBuildError::GenerationFailed(value)
44    }
45}
46
47impl From<ModelValidationError> for ModelBuildError {
48    fn from(value: ModelValidationError) -> Self {
49        ModelBuildError::ValidationFailed(value)
50    }
51}