Rust - 接口设计建议之灵活(flexible)

打印 上一主题 下一主题

主题 1878|帖子 1878|积分 5634

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

吴旭华

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表