comparison 设计

comparison 包含 src/comparison.mbt 中的区间辅助函数 clamp 和 is_between。本页记录它们共同遵循的约定,以及维护者必须保持稳定的行为。

约定

  • 两个函数都先接收值,再按 min、max 的顺序接收边界。
  • 区间是闭区间:等于边界的值位于区间之内。
  • 唯一的约束是 Compare,因此这些函数不依赖 luna-generic,适用于包括 String 在内的任何有序类型。
  • 边界不做校验。min > max 时两个函数都不会中止;API 参考说明了此时的返回值。

一致性

当 min <= max 时,is_between(v, min, max) 为 true 当且仅当 clamp(v, min, max) 返回 v。修改其中一个函数时必须保持这一关系。

维护说明

  • 只要新增或删除函数,或者函数的约束或边界情况行为发生变化,就更新本页和 API 参考,并用 moon info 重新生成 src/pkg.generated.mbti。
  • 对边界进行校验会改变上述行为;若将来引入,须在此处记录。