主要观点:介绍了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) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。