2次发布
0.1.1 | 2024年1月25日 |
---|---|
0.1.0 | 2023年1月4日 |
#136 in #near
598 每月下载量
在 6 个crate中使用 (通过 near-abi-client)
17KB
154 行
发布说明
发布说明和未发布更改可以在 CHANGELOG 中找到。
使用方法
此crate支持两套API,以满足不同用户的需求
- 宏驱动。只需一次宏调用即可获得客户端。
- 基于生成。提供更多控制,并对您最终使用的代码透明,但需要更多设置。
宏API
查看 delegator-macro
示例,了解如何使用宏API获取客户端并使用它。
根据位于 path/to/abi.json
(相对于当前文件目录) 的ABI生成名为 mod
的结构体 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
查看 delegator-generation
示例,了解如何使用生成API生成客户端并使用它。
首先,我们需要我们的包包含一个运行生成步骤的 build.rs
文件。以下代码片段将在 abi.rs
下生成客户端,位于 path/to/out/dir
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?;
您可以自由探索其他方法来自定义生成的代码(例如客户端结构体名称)。
贡献
除非您明确表示,否则根据 Apache-2.0 许可证定义的,您提交给工作内容的任何有意贡献,都将以下列方式进行双重许可,没有其他条款或条件。
许可证
以下任一许可证下授权:
- Apache License,版本 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
依赖项
约 4.5MB
约 93K SLoC