2个版本
0.1.1 | 2024年1月25日 |
---|---|
0.1.0 | 2023年1月4日 |
#2198 在 神奇豆
609 每月下载量
在 7 个crate中使用(直接使用 2 个)
11KB
135 行
发行说明
发行说明和未发布变更可以在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许可证中定义的,应以下列方式双重许可,不附加任何额外条款或条件。
许可证
许可以下之一
- Apache许可证2.0版本(《LICENSE-APACHE》或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(《LICENSE-MIT》或http://opensource.org/licenses/MIT)
任选其一。
依赖项
~3–4MB
~77K SLoC