pub type Result = std::result::Result; #[derive(Debug, thiserror::Error)] pub enum Error { #[error("IO error: {0}")] IO(#[from] std::io::Error), #[error("Join error: {0}")] Join(#[from] tokio::task::JoinError), #[error("Invalid color format: {0}")] Color(String), #[error("Send error: {0}")] Send(String), } impl From> for Error { fn from(err: tokio::sync::mpsc::error::SendError) -> Self { Self::Send(err.to_string()) } }