3个不稳定版本
0.10.1 | 2024年5月23日 |
---|---|
0.10.0 | 2024年5月22日 |
0.1.0 | 2024年3月7日 |
#136 在 #smart
每月下载量 44
在 3 个crate中使用(通过 unc-abi-client)
6KB
发布说明
发布说明和未发布变更可以在 CHANGELOG 中找到。
使用说明
此crate支持两套API,以满足不同用户的需求。
- 宏驱动。通过单次宏调用为您提供客户端。
- 基于生成。为您提供更多控制,并对您最终使用的代码透明,但需要更多设置。
宏API
查看 delegator-macro
示例,以了解如何使用宏API获取客户端并使用它。
基于位于 path/to/abi.json
(相对于当前文件目录)的ABI生成名为 ClientName
的结构体
mod mymod {
unc_abi_client::generate!(ClientName for "path/to/abi.json");
}
将宏调用放在 mod
部分是可选的,但有助于减少意外行为,例如名称冲突。
现在,假设您已部署 contract: utility_workspaces::Contract
,您可以执行如下调用
let contract = mymod::ClientName { contract };
let res = contract
.my_method_name(arg1, arg2)
.await?;
生成API
查看 delegator-generation
示例,了解如何使用生成API生成客户端并使用它。
首先,我们需要我们的包有一个 build.rs
文件,该文件执行生成步骤。以下片段将在 path/to/out/dir
下的 abi.rs
中生成客户端
fn main() -> anyhow::Result<()> {
unc_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: utility_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 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任您选择。
依赖项
~3–4MB
~80K SLoC