吴旭华 发表于 2023-6-9 23:48:18

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]
查看完整版本: Rust - 接口设计建议之灵活(flexible)