Rust作者认为变量默认应该是immutable
,即声明后不能被改动的变量。这一点是让跨言语学习者觉得很别扭,不过这一点小的改动带来了诸多长处,本节咱们来学习Rust的变量。
什么是变量?
假如你初度学习编程言语,变量会是一个比较笼统的概念。 以Rust言语来说,声明一个变量便是请求一块内存,内存的巨细由变量的类型决议,类型咱们会在后边的课程介绍。
let a = "abc";
咱们运用let
关键字声明一个变量a,一起把abc
存放到变量里边。
此时,咱们能够说变量中存储了abc
,也能够说这块内存中存储了abc
。
详细怎么来了解呢?
内存就像这个鸡蛋收纳盒, 咱们为每一个蛋格编码(这个编码就相当于内存地址)。声明一个变量a,相当于找到一个空格把它叫做a,一起把鸡蛋放到这个空格里边。咱们能够把任何一个空格叫做a,它不过是为蛋格的编码起了一个别号。
下面这个图就描绘了咱们这段代码实践做的工作,把0xBA0F0140到0xBA0F0152这段内存叫做变量a,而且存储了字符串abc
。
let a = "abc";
a = "efg"; // X 此处报错
咱们把在声明变量a时赋值了“abc”,就不能再修正这个变量了。这是Rust的一个言语特性,假如咱们后续可能会修正变量a的内容,就需求在声明时添加上mut
关键字,如下:
let mut a = "abc";
a = "efg"; // √
Rust引进mut关键字的有何优势?
- 不行变变量能够避免意外修正,然后避免数据竞争和内存过错。例如,假如一个变量是不行变的,则无法在多个线程中一起修正它,然后避免数据竞争。
- 不行变变量能够使代码愈加简洁易读。例如,假如一个变量是不行变的,则能够明确地表明该变量的值在代码块内不会改动,然后使代码的逻辑愈加清晰。
- 不行变变量能够协助编译器进行优化。例如,假如一个变量是不行变的,则编译器能够知道该变量的值在代码块内不会改动,然后能够进行一些优化,例如消除不必要的计算。
- 不行变变量是函数式编程的重要概念。函数式编程鼓励运用不行变变量和纯函数,然后使代码愈加易于了解和测验。
Rust中不行变变量与const有何差异?
const MAX_SIZE: usize = 100;
const
关键字用于定义常量。常量与不行变变量类似,但常量在编译期就确认了值,不能在运行时改动。不行变变量直到运行期来能确认下来。
常量具有以下长处:
- 性能:常量能够协助编译器进行优化。
- 可读性:常量能够使代码愈加易读。
如何毁掉一个变量?
声明变量对应着请求内存,毁掉变量也便是开释对应的内存。
Rust中开释内存有非常复杂的机制,主要分为两类:
内存的开释是Rust的核心内容,涉及到所有权、借用、和生命周期以及智能指针。这些也是Rust的难点,劝退了众多想尝试Rust的开发者。后边咱们会详细介绍这一部分。不过接下来咱们需求先衬托Rust根底内容,以后再探秘这些难点。
总结:
- let关键字用于声明变量,此外它还用于形式匹配。
- mut关键字用于声明可变变量。
- const关键字用于声明常量。
更多关键词能够检查: doc.rust-lang.org/reference/k… 随着课程的打开咱们会一一介绍这些关键词,不需求刻意回忆,运用的多了,就会形成肌肉回忆了。