假设已经有一个编译正确的Rust程序,我可以让编译器告诉我省略的生命周期被推断为什么吗?
假设已经有一个编译正确的Rust程序,我可以让编译器告诉我省略的生命周期被推断为什么吗?
编译器(目前)可以允许省略生命周期的情况非常简单,因此编译器对于推断出的内容没有太多可告知的:
对于一个函数,所有省略的生命周期都具有相同的值。
编译器不接受在需要做出选择的情况下使用省略生命周期。例外情况是在方法中,但将所有生命周期绑定到self
几乎总是预期的结果,因此这种假设是有意义的。
[1] 如果Rust的未来版本对省略生命周期执行更复杂的推断,则该问题可能会有一个远非微不足道的答案。例如,编译器可以分析整个代码库以推断所有函数(或impl
或struct
,如果在那里也允许省略)的连贯生命周期集合。