Rust 程序设计语言 简体中文版 1.85.0简体中文版 变量和可变性 正如第二章中“使用变量储存值” 部分提到的那样,变量默认是不可改变的(immutable)。这 是 Rust 提供给你的众多优势之一,让你得以充分利用 Rust 提供的安全性和简单并发性来编写 代码。不过,你仍然可以使用可变变量。让我们探讨一下 Rust 为何及如何鼓励你利用不可变 性,以及何时你会选择禁用它。 当变量不可变时,一旦值被绑定一个名称上,你就不能改变这个值。为了对此进行说明,使用 一样的输出。更为重要的是,我们增强了代码安全性, 并消除了可能由于超出数组的结尾或遍历长度不够而缺少一些元素而导致的 bug。 例如,在示例 3-4 的代码中,如果你将 a 数组的定义改为有四个元素,但忘记将条件更新为 while index < 4,代码将会 panic。使用 for 循环的话,就不需要惦记着在改变数组元素个 数时修改其他的代码了。 for 循环的安全性和简洁性使得它成为 Rust 4-2 展示了两个数据指针指向了同一位置。这就有了一个问题:当 s2 和 s1 离开作用域,它们 都会尝试释放相同的内存。这是一个叫做 二次释放(double free)的错误,也是之前提到过 的内存安全性 bug 之一。两次释放(相同)内存会导致内存污染,它可能会导致潜在的安全 漏洞。 74/562Rust 程序设计语言 简体中文版 为了确保内存安全,在 let s2 = s1; 之后,Rust0 码力 | 562 页 | 3.23 MB | 29 天前3
共 1 条
- 1













