Skip to main content

ferrex_model/
error.rs

1use std::fmt::{self, Display};
2
3/// Errors produced by model constructors and validation routines.
4#[derive(Debug)]
5pub enum ModelError {
6    Io(std::io::Error),
7    InvalidMedia(String),
8}
9
10impl Display for ModelError {
11    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
12        match self {
13            ModelError::Io(err) => write!(f, "io error: {err}"),
14            ModelError::InvalidMedia(msg) => write!(f, "invalid media: {msg}"),
15        }
16    }
17}
18
19impl std::error::Error for ModelError {
20    fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
21        match self {
22            ModelError::Io(err) => Some(err),
23            ModelError::InvalidMedia(_) => None,
24        }
25    }
26}
27
28impl From<std::io::Error> for ModelError {
29    fn from(err: std::io::Error) -> Self {
30        ModelError::Io(err)
31    }
32}
33
34pub type Result<T> = std::result::Result<T, ModelError>;