Rust - 接口设计建议之灵活(flexible)
灵活(flexible)
代码的契约(Contract)
- 你写的代码包含契约
- 契约:
- 设计接口时(经验法则):
- 避免施加不必要的限制,只做能够兑现的承诺
- 增加限制 或 取消承诺:
- 放宽限制 或 提供额外的承诺:
限制(Restrictions)与承诺(Promises)
<ul>Rust中,限制的常见形式:
- Trait 约束(Trait Bound)
- 参数类型(Argument Types)
承诺的常见形式:
fn frobnicate1(s: String) -> String
- 契约:调用者进行内存分配,承诺返回拥有的 String -> 无法改为 “无需内存分配” 的函数
fn frobnicate2(s: &str) -> Cow |