Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

标准库:Option、assert! 与其它宏

Option:do!destroy_or!

  • option::do!(opt, |x| …):当 optsome 时执行 lambda,传入内部值;常用于取代「is_some + destroy_some + 分支」的冗长写法。
  • opt.destroy_or!(default):消耗 opt,为 some 则返回值,为 none 则使用默认值(默认值须已存在)。
  • opt.destroy_or!(abort E):为 none 时以错误码 E 中止(Eu64 错误常量)。

第六章 §6.3 的 API 配合阅读,宏侧更强调消费 Option 时的控制流

内建 assert!

assert!(cond, code) 是语言内建宏:条件为假时以 code 中止。错误行号指向调用 assert! 的源码位置,便于定位(与宏展开映射一致的设计目标)。详见 第五章 §5.19

BCS:peel_vec! / peel_option!

sui::bcs 中,对向量或 Option 的解码常配合 peel_vec!peel_option! 等宏,在解码器闭包中组合 peel_* 调用。它们同样是编译期展开,减少手写样板代码。详细步骤见第十二章 BCS 一节。

测试辅助

#[test_only] 模块中常用 assert!std::unit_test 等模块还提供断言与调试辅助(见测试章)。这些与业务宏无强耦合,但同属「减少重复」的宏工具箱。

小结

Option 宏当作控制流压缩写法,把 assert! 当作带行号映射的检查点,把 BCS 宏当作解码样板生成器;需要细节时跳到对应章节即可。