use tokio::sync::TryAcquireError; #[derive(Debug, thiserror::Error)] pub enum ServiceError { #[error("limit reached. try again")] Limit(#[from] TryAcquireError), #[error("hyper error")] Hyper(hyper::Error), #[error("unknown host")] NoHost, #[error("can't connect to the backend")] CantConnect, #[error("not found")] NotFound, #[error("io error: {0}")] Io(std::io::Error), #[error("bad range")] BadRange, #[error("bad utf8")] BadUtf8, #[error("ohh. i didn't expect that this error can be generated.")] Other, } impl From for ServiceError { fn from(e: std::io::Error) -> Self { Self::Io(e) } } impl From for ServiceError { fn from(_: std::str::Utf8Error) -> Self { Self::BadUtf8 } }