在Rust中如何借用可变与可变?

瑟夫·里德(Seph Reed)

我已阅读以下文档:https : //doc.rust-lang.org/rust-by-example/scope/borrow/mut.html

我也读过这个问题:(不能借用可变的借用内容


这些文档帮助我了解了如何将借款声明为可变的(我认为):

let mut (part1, part2) = someTuple;

但是我还无法找到明确的说明,以了解如何将借款视为不变的东西。这是我的猜测:

let (part1, part2) = someTuple;

我知道这是一个超级基本的问题,但是Google搜索使我进入了深入的解释范围,而我仍在尝试在最简单的情况下理解我的观点。

如何在Rust中借用可变变量与不可变变量?

埃德里安
let x = 0;
let immutable_borrow = &x; //borrow as immutable

//to borrow as mutable the variable needs to be declared as mutable
let mut y = 1;
let mutable_borrow = &mut y; //borrow as mutable

注意1:您可以在同一范围内借用不可变或可变的变量,这意味着您不能这样做:

let mut x = 0;
let immutable_borrow = &x;
let mutable_borrow = &mut x;

为什么?

因为如果您具有同一变量的可变引用和不可变引用,那么该变量的数据可能会通过该可变引用进行更改,这可能会导致很多问题。


注意2:您可以无休止地无休止地借用一个变量,但您只能一次可变地借用一个变量。

//You can do this
let x = 0;
let x1 = &x;
let x2 = &x;
//...

//But you can't do this
let mut y = 0;
let y1 = &mut y;
let y2 = &mut y; //won't compile

为什么?

正如刚才提到的。一个可变引用可能会更改所有其他可变引用所未知的数据。这可能会导致很多问题。但是可以有多个不可变的引用,因为不能意外更改数据。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Rust 中的可变借用

你如何解决在 Rust 中可变地借用不同匹配武器的需求?

封闭中可变与不可变借用?

Mutex 中的可变借用失败

如何在Rust中修复“ ..在循环的上一迭代中是在这里可变地借用的”?

如何在Rust中解释对可变类型的不可变引用?

您如何在比赛中借用可变参考?

在Rust中,如何创建可变的迭代器?

Rust 中的可变弧

在使用rust-sdl2进行泵送事件时,“不可变借用防止可变借用”

由于多次可变借用,无法将插入到Trie中的C ++代码移植到Rust中

如何解决可变和不可变借用的共存问题?

如何使Rust可变引用不可变?

Rust`Vec`-无法在`impl`方法中借用`Vec`作为不可变的(错误[E0502])

为什么 Rust 借用检查器会忽略函数参数中的可变指针?

Rust:相同数据结构的不可变借用

正确拆分时,Rust不允许可变借用

为什么在这里发生Rust可变借用?

关于可变内部引用的Rust借用规则是什么?

“不能将 `*arr` 作为不可变借用,因为它也作为可变借用”在函数调用中

无法在递归的Fibonacci实现中借用不可变的借用HashMap缓存作为可变项

在Rust中返回可变引用

为什么 Rust 不能对不可变变量进行可变借用?

Rust 问题:当元组在向量内时,不能可变和不可变地借用部分元组

如何避免在Rust中为可变和不可变引用编写重复的访问器函数?

多重可变参考预防在Rust中如何工作?

如何在Rust中实现可变的仙人掌堆栈?

如何在Rust中传递对可变数据的引用?

避免同时借用可变和不可变