use std::path::PathBuf;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum SwitchbackError {
#[error("codec error: {0}")]
Codec(String),
#[error("render error: {0}")]
Render(String),
#[error("load error: {0}")]
Load(String),
#[error("link error: {0}")]
Link(String),
#[error("companion error: {0}")]
Companion(String),
#[error("io error at {path}: {source}")]
Io {
path: PathBuf,
#[source]
source: std::io::Error,
},
#[error("{0}")]
Other(String),
}
impl SwitchbackError {
pub fn codec(message: impl Into<String>) -> Self {
Self::Codec(message.into())
}
pub fn render(message: impl Into<String>) -> Self {
Self::Render(message.into())
}
pub fn load(message: impl Into<String>) -> Self {
Self::Load(message.into())
}
pub fn link(message: impl Into<String>) -> Self {
Self::Link(message.into())
}
pub fn companion(message: impl Into<String>) -> Self {
Self::Companion(message.into())
}
pub fn other(message: impl Into<String>) -> Self {
Self::Other(message.into())
}
}
pub type Result<T> = std::result::Result<T, SwitchbackError>;