2.6.3 &mut 输入不会降级为 &
1分钟内可阅读完
译文 · 基于 Learning Rust
&mut 输入不会降级为 &
原文链接: https://quinedot.github.io/rust-learning/m-no-downgrades.html
仍然讨论这个签名:
| |
新手常常期望 quz 返回后 self 只被共享借用,因为返回的是共享引用。但事实并非如此;只要返回的 &str 仍然有效,self 就保持独占借用。
我发现盯着确切的返回类型来建立这种模式的心智模型是个陷阱。生命周期相互关联这一事实至关重要,但除此之外,应该把注意力放在输入参数上:你不能调用该方法,除非你先创建了一个生命周期与返回类型一样长的 &mut self。一旦创建了那个独占借用(或重借用),独占性就会持续整个生命周期的长度。此外,你通过调用方法把 &mut self 交出去了(它不是 Copy),因此除了通过方法返回给你的东西(本例中是 &str)之外,你无法对 self 创建任何其他重借用。
这种不会降级的特性可以被依赖以保证健全性。 因此,即使 Rust 将来有了某种"可降级 API",它也不会取代示例中的这类签名。