rpc_adapter 0.1.12

English: RPC adapter for unified request handling / 中文: 统一请求处理的RPC适配器
Documentation
use crate::Response;

pub enum Return<T> {
  Ok(T),
  Err(anyhow::Error),
  Response(Response),
}

impl<T> From<T> for Return<T> {
  fn from(value: T) -> Self {
    Self::Ok(value)
  }
}

impl<T> From<anyhow::Result<T>> for Return<T> {
  fn from(value: anyhow::Result<T>) -> Self {
    match value {
      Ok(value) => Self::Ok(value),
      Err(err) => match err.downcast::<crate::Response>() {
        Ok(response) => Self::Response(response),
        Err(err) => Self::Err(err),
      },
    }
  }
}