#rpc-client #json-rpc-client #rpc #transport-layer #rpc-api #elite-lib #generic-api-lib

bin+lib elite-rpc

具有不同传输层和协议层的类型安全 JSON RPC 客户端

1 个不稳定版本

0.0.1 2024 年 6 月 19 日

#32#rpc-api

Apache-2.0 许可协议

15KB
188 行代码(不包括注释)

Elite RPC

具有不同传输层和协议层的类型安全 JSON RPC 客户端。

概述

该库为 Rust 提供了类型安全的 JSON RPC 客户端实现,支持各种传输层。它设计得易于使用,同时通过 Rust 强大的类型系统确保安全性和可靠性。

功能

  • 类型安全的 JSON RPC 客户端实现
  • 支持多个传输层
  • 易于使用,可轻松集成到项目中

安装

将以下内容添加到您的 Cargo.toml

[dependencies]
elite-rpc = "0.0.1"

用法

以下是一个使用该库的简单示例

use elite_rpc::Client;

use elite_rpc::protocol::Protocol;
use elite_rpc::transport::Transport;
use elite_rpc::EliteRPC;

pub struct MockTransport;
#[derive(Clone)]
pub struct MockProtocol;

impl Transport<MockProtocol> for MockTransport {
    fn new(_: &str, _: MockProtocol) -> anyhow::Result<Self>
    where
        Self: Sized,
    {
        Ok(Self)
    }

    fn call(
        &self,
        _: &str,
        _: &<MockProtocol as Protocol>::InnerType,
    ) -> anyhow::Result<<MockProtocol as Protocol>::InnerType> {
        Ok(())
    }
}

impl Protocol for MockProtocol {
    type InnerType = ();

    fn from_from_request(
        &self,
        _: &[u8],
        _: Option<crate::protocol::Encoding>,
    ) -> anyhow::Result<Self::InnerType> {
        Ok(())
    }

    fn new() -> anyhow::Result<Self>
    where
        Self: Sized,
    {
        Ok(MockProtocol)
    }

    fn to_request(&self, _: &str, _: &Self::InnerType) -> anyhow::Result<Self::InnerType> {
        Ok(())
    }
}

fn main() {
    let rpc = EliteRPC::<MockTransport, MockProtocol>::new("https://127.0.0.1:8545")?;
    let response = rpc.call("method_name", &())?;
    assert_eq!(response, ());
}

将 "https://127.0.0.1:8545", "method_name" 和参数替换为您的实际 JSON RPC 端点和方法。

许可证

具有不同传输层和协议层的类型安全 JSON RPC 客户端。

版权所有 (C) 2024 Vincenzo Palazzo vincenzopalazzodev@gmail.com

本程序是免费软件;您可以重新分配它并/或修改它,具体请参阅自由软件基金会发布的 GNU 通用公共许可证的条款;许可证版本为 2。

本程序分发时希望它对您有用,但没有任何保证;甚至没有关于适销性或针对特定目的的隐含保证。有关详细信息,请参阅 GNU 通用公共许可证。

您应已收到与该程序一起提供的 GNU 通用公共许可证副本;如果没有,请写信给自由软件基金会,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA。

依赖关系

~8–16MB
~230K SLoC