Rust - 接口设计建议之灵活(flexible)
Rust - 接口设计建议之灵活(flexible)灵活(flexible)
代码的契约(Contract)
[*]你写的代码包含契约
[*]契约:
[*]要求:代码使用的限制
[*]承诺:代码使用的保证
[*]设计接口时(经验法则):
[*]避免施加不必要的限制,只做能够兑现的承诺
[*]增加限制 或 取消承诺:
[*]重大的语义版本更改
[*]可导致其他代码出问题
[*]放宽限制 或 提供额外的承诺:
[*]通常是向后兼容的
限制(Restrictions)与承诺(Promises)
<ul>Rust中,限制的常见形式:
[*]Trait 约束(Trait Bound)
[*]参数类型(Argument Types)
承诺的常见形式:
[*]Trait 的实现
[*]返回类型
fn frobnicate1(s: String) -> String
[*]契约:调用者进行内存分配,承诺返回拥有的 String -> 无法改为 “无需内存分配” 的函数
fn frobnicate2(s: &str) -> Cow
页:
[1]