telegraph_rs/
error.rs

1use serde::Deserialize;
2use thiserror::Error;
3
4#[derive(Debug, Deserialize)]
5#[serde(untagged)]
6pub(crate) enum ApiResult<T> {
7    Ok { result: T },
8    Err { ok: bool, error: String },
9}
10
11impl<T> Into<Result<T, Error>> for ApiResult<T> {
12    fn into(self) -> Result<T, Error> {
13        match self {
14            ApiResult::Ok { result: v } => Ok(v),
15            ApiResult::Err { error: e, .. } => Err(Error::ApiError(e)),
16        }
17    }
18}
19
20#[derive(Error, Debug)]
21pub enum Error {
22    #[error("reqwest error: {0}")]
23    ReqwestError(#[from] reqwest::Error),
24    #[error("api error: {0}")]
25    ApiError(String),
26    #[error("io error: {0}")]
27    IoError(#[from] std::io::Error),
28}