#json-rpc-client #proc-macro #jsonrpc-client

jsonrpc_client_macro

jsonrpc_client 提供的内部过程宏crate

3个版本 (重大更改)

0.3.0 2021年4月26日
0.2.0 2021年1月11日
0.1.0 2021年1月10日

#json-rpc-client 中排名第 55

Download history • Rust 包仓库 84/week @ 2024-03-28 • Rust 包仓库 126/week @ 2024-04-04 • Rust 包仓库 150/week @ 2024-04-11 • Rust 包仓库 68/week @ 2024-04-18 • Rust 包仓库 158/week @ 2024-04-25 • Rust 包仓库 131/week @ 2024-05-02 • Rust 包仓库 83/week @ 2024-05-09 • Rust 包仓库 219/week @ 2024-05-16 • Rust 包仓库 339/week @ 2024-05-23 • Rust 包仓库 55/week @ 2024-05-30 • Rust 包仓库 22/week @ 2024-06-06 • Rust 包仓库 27/week @ 2024-06-13 • Rust 包仓库 38/week @ 2024-06-20 • Rust 包仓库 31/week @ 2024-06-27 • Rust 包仓库 33/week @ 2024-07-04 • Rust 包仓库 53/week @ 2024-07-11 • Rust 包仓库

每月下载量 157
jsonrpc_client 使用

MIT/Apache

12KB
232 行代码(不含注释)

无废话的Rust JSON-RPC客户端

特性

  • 无样板代码:由过程宏驱动
  • 无客户端锁定:对底层HTTP客户端有完全的自由控制
  • 轻量级:仅依赖于syn和serde
  • 异步就绪

它是如何工作的?

我们将一个特质作为过程宏的输入,并输出另一个具有所有函数默认实现的特质。这允许我们移除所有制作JSON-RPC调用的样板代码,同时您还可以定义一个漂亮的接口!

如何使用它?

  1. 依赖于 jsonrpc_client

    [dependencies]
    jsonrpc_client = { version = "*", features = ["reqwest"] }
    
  2. 定义一个描述您想要与之通信的JSON-RPC API的特质,并用 #[jsonrpc_client::api] 注释

    #[jsonrpc_client::api]
    pub trait Math {
        async fn subtract(&self, subtrahend: i64, minuend: i64) -> i64;
    }
    
  3. 定义您的客户端

    #[jsonrpc_client::implement(Math)]
    struct Client {
        inner: reqwest::Client,
        base_url: reqwest::Url,
    }
    
  4. 开始使用您的客户端!

后端

目前,客户端支持几个后端,所有这些都可以通过单独的功能标志激活

  • reqwest
  • surf
  • isahc

欢迎对更多后端的支持。

不幸的是,并不是所有后端都能得到支持。特别是

  • hreq:由于它们的 Agent 在发送请求时接收 &mut self,因此无法支持,这不符合 SendRequest 特质。
  • awc:由于它们的 Client 没有实现 Send,因此无法支持。

依赖关系

~1.5MB
~35K SLoC