主要观点:介绍了nolife 0.4这个 crate,它能解决借用错误,提供了处理自引用代码的方式,还讲述了编写此类库的要点,如面对不安全代码要明确契约、用工具测试、有“反例”模块确保代码不编译等,以及nolife的 API 设计、与Box的关系等,还提到了外部贡献者[@steffahn]对nolife的贡献和看法。
关键信息:
nolife 0.4可将错误代码转为可编译代码,带来了一些 breaking 变化,新的宏 API 是必需的。- 驯服不安全代码的方法是与它们对话并使用专用工具,
nolife有自动化测试用miri检查未定义行为。 - “反例”模块可确保某些代码不编译,
nolife的 API 设计有意小巧以减少错误。 nolife的BoxScope类型不使用Box,以免违反借用规则,所有测试用例在miri中通过。- 外部贡献者[@steffahn]对
nolife的 issues 进行了关键贡献,他对nolife的看法包括其独特性和使用上的优缺点。
重要细节: - 在代码示例中展示了
nolife的使用方式,如zip_streamer函数。 - 详细说明了
unsafe代码中的契约在“oath recipient”和“oath taker”位置的体现。 - 提到了
nolife在不同方面的具体实现和测试情况,如在rustdoc中的“反例”模块、在miri中的测试等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。