在 Rust 中,生命周期省略规则(Lifetime Elision Rules) 是一组被硬编码进 Rust 编译器的确定性规则。 它的目的是为了让开发者在编写常见模式的代码时,不必显式地标注每一个生命周期参数,从而减少代码的啰嗦程度。 如果编译器在应用这些规则后,仍然无法确定引用的生命周期,它不会去“猜测”,而是会直接报错,要求你手动添加标注。 --- 核心概念:输入与输出生命周期 在理解规则之前,需要区分两种生命周期: 1. 输入生命周期(Input Lifetimes):函数参数上的引用。 2. 输出生命周期(Output Lifetimes):函数返回值上的引用。 三条省略规则 编译器会按照顺序检查以下三条规则。如果检查完这三条规则后,输出生命周期仍未被确定,编译就会失败。 规则 1:每个引用参数都有自己的生命周期 编译器会为每一个引用类型的参数分配一个独立的生命周期参数。 一个参数: $\rightarrow$ 两个参数: $\rightarrow$ 规则 2:如果只有一个输入生命周期,它将被赋予所有输出生命周期 如果函数只有一个输入参数(或者有多个参数但只有一个是引...