4.5.3.4 引用来源

译文 · 基于 Learning Rust

引用来源

原文链接: https://quinedot.github.io/rust-learning/dyn-elision-citations.html

最后我们将所涵盖的 dyn Trait 生命周期省略与当前参考材料对比,并提供省略曲折历史的一些引用。

与参考手册的差异摘要

trait 对象生命周期省略的官方文档可在此找到。

总之,它说明 dyn Trait 生命周期有默认对象生命周期约束,随上下文变化。仅当生命周期被完全省略时默认约束才生效。写出 dyn Trait + '_ 时,适用普通生命周期省略规则。

截至本文写作时,官方文档说明:

若 trait 对象用作泛型类型的类型参数,则首先用包含类型尝试推断约束。

  • 若包含类型有唯一约束,则为默认
  • 若包含类型有多个约束,必须指定显式约束

若以上规则都不适用,则使用 trait 上的约束:

  • 若 trait 定义有单个生命周期约束,则使用该约束。
  • 若任何生命周期约束使用 'static,则使用 'static。
  • 若 trait 没有生命周期约束,则在表达式中推断生命周期,表达式外为 'static。

我们与参考手册涵盖的一些差异:

其他未记录或文档不足的行为:

RFC、Issue 和 PR

trait 对象,尤其是 trait 对象生命周期省略,随时间经历大量演变。此处总结一些主要发展和 issue。

提醒:许多引用早于 dyn Trait 语法。 trait 对象过去在类型位置只写 Trait,而非 dyn Trait。

最后修改 August 23, 2026: 更新 (499855b16)