2.6.1 何时不应命名生命周期
1分钟内可阅读完
译文 · 基于 Learning Rust
何时不应命名生命周期
原文链接: https://quinedot.github.io/rust-learning/m-naming.html
有时新手会试图通过让代码更泛型来解决借用检查错误,这通常涉及添加生命周期并命名之前被省略的生命周期:
| |
但这实际上并不比下面这个允许多更多可能性:
| |
因为在第一个例子中,&'a mut self 可以强制转换为 &'b mut self。而且事实上,你希望它这样做——因为你通常不想让 self 被独占借用的时间超过必要的长度。
到了这一步,你可以利用生命周期省略,坚持使用:
| |
随着协变性和函数生命周期省略变得更直观,你会逐渐培养出何时命名生命周期毫无意义的感觉。像第一个例子那样添加多余的生命周期,往往会让理解借用错误变得更难,而不是更容易。