首页
Preview

Rust 中的"借用"和"引用"

Rust 内存管理简介

image.png

借用和所有权是密切相关的概念,在 Rust 的内存管理中起着至关重要的作用。因此,理解借用对于在 Rust 中有效工作至关重要。

为了维护内存安全,Rust 使用借用检查器来执行其所有权规则。所有权规则规定了 Rust 如何管理堆栈和堆上的内存。

大多数时候,我们希望访问一些数据而不想拥有它的所有权。为了实现这一点,Rust 提供了一种借用机制。对象可以按引用传递 (&T),而不是按值传递对象 (T)。

在本 Rust 教程中,我们将学习如何从其所有者那里临时借用一个值,这使我们可以在不破坏所有权的情况下对该值进行多次引用。我们还将学习如何引用一个值的内存地址,以及如何使用取消引用运算符获取该地址的值。

什么是借用?

如果我们想在一个函数中使用一个值,而不将所有权转移给函数,我们可以从它的所有者那里临时借用这个值。当函数完成该值时,它会返回给所有者。

借用允许我们在不破坏单一所有者概念的情况下拥有一个或多个对单个值的引用。

当我们借用一个值时,我们使用 & 运算符引用它的内存地址。Rust 中的引用是作为参数传递给函数的地址。

image.png

输出

Inside print_vector function [10, 20, 30]
Printing the value from main() v[0] = 10

可变引用

函数可以通过使用对此类资源的可变引用来修改借用的资源。可变引用以&mut为前缀。可变引用只能对可变变量进行操作。

image.png main()函数将变量名称的可变引用传递给display()函数。display 函数将附加字符串附加到原始名称变量。

输出

param_name value is : Hello
The value of name after modification is: Hello World

从变量中借用和引用一个值 在 Rust 中,可以使用&运算符引用值的内存地址。为了更好地理解这个概念,让我们看一个例子。

image.png

在上面的示例中,变量aString Hello的所有者。如果我们在函数中使用变量,它会将所有权传递给函数。在这种情况下,我们不希望这样,所以解决方案是改为引用所有者 (a )。

在函数定义的参数列表中,我们在类型前添加&参数来告诉 Rust 传入的值将是对某个值的引用,而不是实际值。该函数只是借用值,并在函数执行完成后将其归还。

当我们调用该函数时,我们必须再次添加&运算符,这次是在我们传递的值之前。

结论

了解所有权和借用对于编写高效且内存安全的 Rust 代码至关重要,这些代码可以无错地编译和运行。

不遵守所有权规则将被借用检查器检测到,要求你修改代码以使其在 Rust 编译之前是内存安全的。当你刚接触 Rust 时,借用检查器很烦人。但是,随着你编写更多 Rust 代码,你会习惯它并获得编写内存安全 Rust 代码的经验。

版权声明:本文内容由TeHub注册用户自发贡献,版权归原作者所有,TeHub社区不拥有其著作权,亦不承担相应法律责任。 如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

点赞(0)
收藏(0)
前端一条鱼
暂无描述

评论(0)

添加评论