//! The error type shared by the core modules. use std::io; /// Everything a core operation can fail with. The `Display` text is shown to the /// user as-is, so validation messages are written in Czech like the rest of the UI. #[derive(Debug, thiserror::Error)] pub enum CoreError { /// Invalid input (bad year, empty title, unknown 3D format, …). #[error("{0}")] Invalid(String), /// The target already exists and the caller asked not to overwrite it. #[error("{0}")] Exists(String), /// Something expected on disk is missing. #[error("{0}")] NotFound(String), /// A remote service (TMDb, ČSFD, Jellyfin) failed. #[error("{0}")] Remote(String), #[error(transparent)] Io(#[from] io::Error), #[error(transparent)] Json(#[from] serde_json::Error), } impl CoreError { pub fn invalid(msg: impl Into) -> Self { Self::Invalid(msg.into()) } } pub type CoreResult = Result;