fuels-rs类型安全魔法:用abigen!宏3步把Sway合约变成Rust绑定
fuels-rs类型安全魔法:用abigen!宏3步把Sway合约变成Rust绑定【免费下载链接】fuels-rsFuel Network Rust SDK项目地址: https://gitcode.com/GitHub_Trending/fu/fuels-rs在 Fuel Network 上开发智能合约时fuels-rsFuel Network Rust SDK的abigen!宏是新手必须掌握的核心能力它能读取 Sway 合约编译出的 JSON ABI 文件在编译期为 Rust 代码生成类型安全的绑定——合约方法变成 Rust 方法链上类型变成 Rust 结构体写错参数在编译期就会报错。本文将带你用 3 步把 Sway 合约变成 Rust 绑定彻底告别手写编码解码逻辑。为什么需要 abigen! 绑定调用链上合约通常需要处理函数选择器、参数编码、返回值解码等繁琐细节。如果手动实现不仅代码量大还容易因为类型不匹配产生隐蔽的运行时错误。fuels-rs 的思路是让 Forc 编译器 产出一份描述合约接口的 JSON ABI 文件再由abigen!这个过程宏在编译期读取它自动生成等价的 Rust 方法和自定义类型。整个过程只需三行配置Contract/Script/Predicate程序类型name生成的绑定名称abiJSON ABI 文件路径或直接传入 JSON 内容宏的完整语法说明见 the-abigen-macro.md。第1步编译 Sway 合约拿到 JSON ABI 文件JSON ABI 文件是整个流程的起点无论部署新合约还是连接已有合约它都必不可少——SDK 靠它了解你合约里有哪些方法、参数和返回值。一个返回bool的测试函数编译出的 ABI 长这样[ { type: function, inputs: [], name: test_function, outputs: [ { name: , type: bool, components: null } ] } ]文件通常位于合约项目编译输出目录如out/release/xxx-abi.json。仓库中的示例 ABI 可以直接参考abi.json它描述了initialize_counter和increment_counter两个方法。第2步一行 abigen! 生成 Rust 绑定在你的 Rust crate 中引入fuels::prelude然后调用宏即可。示例代码见 lib.rsuse fuels::prelude::*; abigen!(Contract( name MyContractName, abi examples/rust_bindings/src/abi.json ));就这么简单。生成后MyContractName会自动拥有methods()、initialize_counter(u64)、increment_counter(u64)等方法签名与合约一一对应类型完全受编译器检查。生成代码的整体结构每个程序一个模块、共享类型统一提取到shared_types可参考 rust_bindings_formatted.rs。多合约提示如果你有多个合约和脚本推荐在一次abigen!调用里全部声明这样 SDK 会自动做类型共享并避免命名冲突完整写法见 lib.rs。第3步实例化并调用链上方法绑定生成后把合约 ID 和钱包传入构造函数就可以像调用本地函数一样调用链上方法let contract_instance MyContract::new(contract_id, wallet); let response contract_instance .methods() .initialize_counter(42) // 构建 ABI 调用 .call() // 发起网络调用 .await?;传错参数个数或类型编译器会直接拒绝。这正是类型安全魔法的含义——链上交互的安全性从运行时前移到了编译时。可运行的完整示例含费用估算、部署流程都在 examples/contracts/ 目录中核心调用演示见 lib.rs。进阶用 setup_program_test! 一步到位写测试时还可以把生成绑定 部署合约合并成一个宏调用进一步减少样板代码setup_program_test!( Wallets(wallet), Abigen(Contract( name TestContract, project e2e/sway/contracts/contract_test )), Deploy( name contract_instance, contract TestContract, wallet wallet ), );该宏直接指向 Sway 项目路径自动完成绑定生成与合约部署测试中即可直接调用contract_instance.methods().initialize_counter(42)。更多细节见 the-setup-program-test-macro.md。常见问题速查问题解决方案找不到生成的类型可能有同名类型冲突用完整路径abigen_bindings::my_mod::TheType访问多个abigen!调用互相冲突合并到一次调用或分散到不同模块不知道 ABI 文件在哪Forc 编译后查看out/release/下的*-abi.json想传 JSON 字符串而非路径abi参数支持直接写 JSON 内容见 lib.rs总结fuels-rs 的abigen!宏用编译 ABI → 生成绑定 → 直接调用三步把 Sway 合约变成编译期类型安全的 Rust 接口。掌握它之后合约调用、脚本执行、谓词验证都可以用同套模式完成——这正是 Fuel Network Rust SDK 对新手最友好的一块拼图。更多入门内容可阅读 abigen 文档 和 getting-started.md。【免费下载链接】fuels-rsFuel Network Rust SDK项目地址: https://gitcode.com/GitHub_Trending/fu/fuels-rs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

基于OpenCV的电表LED数码管自动识别:传统图像处理实战方案

基于OpenCV的电表LED数码管自动识别:传统图像处理实战方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/9 4:17:19 阅读更多 →
南卡DeepSleep睡眠耳机评测:云感柔压技术如何实现无感佩戴与科学助眠

南卡DeepSleep睡眠耳机评测:云感柔压技术如何实现无感佩戴与科学助眠

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/24 10:26:37 阅读更多 →
CLIP 零样本文本匹配完整教程:不标数据、不训模型,3 分钟让一万张图变成“文字可检索“

CLIP 零样本文本匹配完整教程:不标数据、不训模型,3 分钟让一万张图变成“文字可检索“

CLIP 零样本文本匹配完整教程:不标数据、不训模型,3 分钟让一万张图变成"文字可检索" 【免费下载链接】CLIP CLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image 项目地址: https://gi…

2026/10/25 10:34:09 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/8 1:19:03 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/8 14:17:55 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/9 1:59:56 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/8 1:38:41 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/7 12:08:40 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/8 1:23:14 阅读更多 →

日新闻

周新闻

月新闻