use jsonrpc_client::{Error, Response, SendRequest, Url}; use serde::de::DeserializeOwned; use std::fmt; mod api { #[jsonrpc_client::api] pub trait Math { async fn subtract(&self, subtrahend: i64, minuend: i64) -> i64; } } struct InnerClient; #[derive(Debug)] pub struct DummyError; impl fmt::Display for DummyError { fn fmt(&self, _: &mut fmt::Formatter<'_>) -> fmt::Result { unimplemented!() } } impl std::error::Error for DummyError {} #[async_trait::async_trait] impl SendRequest for InnerClient { type Error = DummyError; async fn send_request

(&self, _: Url, _: String) -> Result, Self::Error> where P: DeserializeOwned, { unimplemented!() } } impl From for Error { fn from(inner: DummyError) -> Self { Self::Client(inner) } } #[jsonrpc_client::implement(api::Math)] pub struct Client { inner: InnerClient, base_url: Url, } fn main() {}