rust - Rust - 为什么借用 &mut 两次时它不会给我一个错误
问题描述
我正在查看这个 rust 文档 https://doc.rust-lang.org/1.30.0/book/2018-edition/ch04-02-references-and-borrowing.html
当我借用 &mut 两次时,我不会看到任何错误(请参阅下面的代码),谁能告诉我为什么?
let mut s = String::from("hello");
let r1 = &mut s;
let r2 = &mut s;
解决方案
这是由于非词汇生命周期。编译器认识到,由于第一个引用在创建第二个引用之后从未使用过(或者在您的示例中根本没有使用),因此可以简单地删除它,从而允许创建第二个引用。
如果我们尝试用下面的例子来延长第一个引用的生命周期,我们会得到一个关于有多个可变引用的错误,正如预期的那样:
let mut s = String::from("hello");
let r1 = &mut s;
let r2 = &mut s; // error[E0499]: cannot borrow `s` as mutable more than once at a time
drop(r1);
推荐阅读
- php - 如何动态操作传递给 Model::find 的数据?
- wordpress - 如何通过 docker compose cammand 选项添加插件?
- angular - Angular 6 - 从子模块到父模块的事件发射器
- html - 如何通过键盘交互浏览 SVG 图像
- java - 不同的项目 SDK 和语言级别
- laravel - 如果 jwt 令牌在 laravel 和 Vue spa 中使用 httponly 存储在 cookie 中,如何防止 csrf 攻击?
- javascript - Javascript fetch api 返回 200 和响应但是.then 不能工作
- java - 如何在我的自定义类中处理 onClick 或 onTouch 事件?
- javascript - TypeError:无法读取 Reactjs 中未定义的属性“0”添加到购物车功能
- http - 如何为单个 HTTP 请求使用多个证书?