29、Rust 中的借用、生命周期与生命周期标注

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 所表示的数字。借用从引用开始指向该对象时开始,到该变量最后一次使用该值时结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值