2个版本
0.1.1 | 2024年1月25日 |
---|---|
0.1.0 | 2023年1月4日 |
#67 in #near
每月587次下载
在 5 个crate(2 个直接)中使用
20KB
203 行
发行说明
发行说明和未发布的变化可以在 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(())
}
然而,生成的文件本身不包括在您的源集中。您必须手动包含它;推荐的方法是创建一个带有自定义路径的mod。
#[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)
由您选择。
依赖项
~5MB
~101K SLoC