#linking

Rust 跨 crate 前向声明进入 nightly

lwn.net · ⭐️ 7/10 · 2026-10-20

7/10

在 Kangrejos 2026 上,Rust 编译器贡献者 Jana Dönszelmann 介绍了 nightly 中已可用的“外部可实现项”(externally implementable items,用 \\[eii\] 标注):一个 crate 可声明由其他 crate 实现的函数,作为 C 弱符号链接的受检查替代;编译器保证至多一个定义,并在既无外部定义又无回退实现时报错。该机制目前依靠弱链接实现,以便各 crate 并行生成代码,但受 Windows 弱链接限制,仅支持类 Unix 平台。她还演示了基于该机制的 -Coverflow-checks=report 原型和 report\integer\overflow\(\):发生整数溢出时调用可返回的处理函数,默认仍转入 panic,使用者需启用该编译选项并自行定义处理函数。她认为这套溢出检查改动不大,但尚未正式提议纳入语言,而是先征求内核开发者意见,尤其是 Rust for Linux 当前溢出即 panic 与 Linus Torvalds 认为意外溢出不应使整个内核崩溃之间的分歧。