所以,你想要编写一个不安全的 crate

主要观点:介绍了nolife 0.4这个 crate,它能解决借用错误,提供了处理自引用代码的方式,还讲述了编写此类库的要点,如面对不安全代码要明确契约、用工具测试、有“反例”模块确保代码不编译等,以及nolife的 API 设计、与Box的关系等,还提到了外部贡献者[@steffahn]对nolife的贡献和看法。
关键信息:

  • nolife 0.4可将错误代码转为可编译代码,带来了一些 breaking 变化,新的宏 API 是必需的。
  • 驯服不安全代码的方法是与它们对话并使用专用工具,nolife有自动化测试用miri检查未定义行为。
  • “反例”模块可确保某些代码不编译,nolife的 API 设计有意小巧以减少错误。
  • nolifeBoxScope类型不使用Box,以免违反借用规则,所有测试用例在miri中通过。
  • 外部贡献者[@steffahn]对nolife的 issues 进行了关键贡献,他对nolife的看法包括其独特性和使用上的优缺点。
    重要细节:
  • 在代码示例中展示了nolife的使用方式,如zip_streamer函数。
  • 详细说明了unsafe代码中的契约在“oath recipient”和“oath taker”位置的体现。
  • 提到了nolife在不同方面的具体实现和测试情况,如在rustdoc中的“反例”模块、在miri中的测试等。
阅读 19
0 条评论