Rust 中的借用、生命周期与生命周期标注
引言
在 Rust 编程中,我们可能会遇到一些错误,比如在向量中插入或移除元素会使所有指向该向量的引用失效。这种错误属于更广泛的一类错误,即数据结构可通过多个路径或别名访问,当使用一个别名更改数据结构时,另一个别名可能无法正确使用它。我们将这种编程错误称为“别名更改后使用”错误。为了避免此类错误,我们需要引入借用的概念。
借用
借用是 Rust 中一个重要的概念。我们来看下面的代码:
let n = 12;
let _ref_to_n = &n;
在第二行代码之后, _ref_to_n 变量表示一个引用,它引用了与 n 变量相同的数字。但 _ref_to_n 并不拥有值为 12 的对象,因为该数字已经由 n 变量表示,当控制流退出 n 变量所在的块时,它将被释放。如果 _ref_to_n 拥有该对象,那么它将被释放两次。所以,普通引用(不包括 Box 对象以及向量、字符串和其他集合中的内部引用)从不拥有对象。
这种不拥有被引用对象的引用概念被称为借用。在 Rust 文档中,这个词通常缩写为“borrow”。我们说 _ref_to_n 变量借用了 n 所表示的数字。借用从引用开始指向该对象时开始,到该变量最后一次使用该值时结束。
超级会员免费看
订阅专栏 解锁全文
1315

被折叠的 条评论
为什么被折叠?



