#near #generate #abi #clients #smart-contracts #schema #contract

near-abi-client-impl

用于生成NEAR智能合约Rust客户端的库

2个版本

0.1.1 2024年1月25日
0.1.0 2023年1月4日

#2198神奇豆

Download history 9/week @ 2024-03-13 17/week @ 2024-03-27 35/week @ 2024-04-03 5/week @ 2024-04-10 3/week @ 2024-05-15 47/week @ 2024-05-22 179/week @ 2024-05-29 141/week @ 2024-06-05 139/week @ 2024-06-12 101/week @ 2024-06-19 211/week @ 2024-06-26

609 每月下载量
7 个crate中使用(直接使用 2 个)

MIT/Apache

11KB
135

near-abi-client-rs

从NEAR的ABI模式生成带有workspaces-rs的Rust客户端代码的库

Github CI Build Crates.io version Downloads

发行说明

发行说明和未发布变更可以在CHANGELOG中找到

使用方法

此crate支持两套API,以满足不同用户的需求

  • 宏驱动。通过单个宏调用即可获得客户端。
  • 生成式。提供更多控制权,并且关于最终使用代码的透明度更高,但需要更多设置。

宏API

查看delegator-macro示例,了解如何使用宏API获取客户端并使用它。

要基于位于path/to/abi.json(相对于当前文件目录)的ABI生成名为mod的struct ClientName

mod mymod {
    near_abi_client::generate!(ClientName for "path/to/abi.json");
}

将宏调用放在mod部分中是可选的,但有助于减少意外行为,如名称冲突。

现在,假设您已部署了contract: near_workspaces::Contract,您可以进行如下调用

let contract = mymod::ClientName { contract };
let res = contract
    .my_method_name(arg1, arg2)
    .await?;

生成API

请查看使用生成API生成客户端并使用的独立项目的示例:delegator-generation

首先,我们需要我们的包中有一个运行生成步骤的 build.rs 文件。以下代码片段将在 path/to/out/dir 下生成客户端到 abi.rs 文件。

fn main() -> anyhow::Result<()> {
    near_abi_client::Generator::new("path/to/out/dir".into())
        .file("path/to/abi.json")
        .generate()?;
    Ok(())
}

然而,生成的文件本身并不包含在您的源集合中。您需要手动包含它;建议的方式是创建一个具有自定义路径的模块。

#[path = "path/to/out/dir/abi.rs"]
mod mymod;

现在,假设您已部署了contract: near_workspaces::Contract,您可以进行如下调用

let contract = mymod::AbiClient { contract };
let res = contract
    .my_method_name(arg1, arg2)
    .await?;

请随意探索如何使用 Generator 中的其他方法来自定义生成的代码(例如,客户端结构名称)。

贡献

除非您明确表示,否则任何有意提交以包含在您的工作中的贡献,如Apache-2.0许可证中定义的,应以下列方式双重许可,不附加任何额外条款或条件。

许可证

许可以下之一

任选其一。

依赖项

~3–4MB
~77K SLoC