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。 - 对边界进行校验会改变上述行为;若将来引入,须在此处记录。