用途:指导在 Sui 上正确配置、构建和测试 Move 包,并避免把其他 Move 方言(Aptos、Core Move、旧版 Move)的写法带入 Sui。
包配置:Move.toml 使用 edition = "2024";[package] 的 name 定义包地址名,需与代码中模块引用的名称一致(如 module my_package::m 则 name = "my_package")。Sui 1.45+ 隐含框架依赖,不要在 [dependencies] 中列出 Sui、MoveStdlib、Bridge、SuiSystem。Sui CLI 1.63+ 不再需要 [addresses] / [dev-addresses],命名地址由 [package] name 与 [dependencies] 键派生。任何较大改动后运行 sui move build 验证编译。
构建与测试:sui move build 构建;sui move test 运行全部测试;sui move test swap_exact_input 按名称运行单个测试。测试函数不要加 test_ 前缀,#[test] 已表达意图;#[test] 与 #[expected_failure] 合并到一行。expected_failure 测试不要做清理(不要 scenario.end() 等)。简单测试用 tx_context::dummy(),仅在需要多交易或多发送者时才用 test_scenario。断言优先 assert_eq!(失败时显示两侧值),不要给 assert! 传 abort code。测试中销毁对象用 sui::test_utils::destroy,不要自定义 destroy_for_testing。
Sui 上不适用:acquires、move_to、move_from、borrow_global(Sui 无全局存储);signer 类型(用 &mut TxContext 和 ctx.sender());Script 函数(用 entry 函数);public(friend)(用 public(package));无 public 关键字的结构体(结构体必须 public);let x 声明可变变量(用 let mut x);函数体内写模块级 use(use 放模块顶部);&signer 在 Sui 不存在。
限制:资料未提供版本兼容性细节、错误排查案例及除上述之外的工具配置说明。