1use std::fmt::{self, Display};
2
3#[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>;