0%

Rust所有权

在Rust中没有垃圾回收器(garbage collector),也无需开发者亲自分配和释放内存。Rust管理内内存的方式是通过其所有权系统,编译器在编译原程序会根据一系列的规则进行检查,所以Rust程序编译速度会比较慢,但是在运行时,所有权系统的任何功能都不会减慢程序运行的速度。

所有权规则

  1. Rust中的每一个值都有一个被称为其所有者的变量
  2. 值在任一时刻有且只有一个所有者
  3. 当所有者离开作用域,这个值将被丢弃

变量作用域

Rust中字符串值是被硬编码进程序代码中的,我们尝试声明一个字符串字面量s。

当s进入作用域时,它就是有效的,直到它离开作用为止。

1
2
3
4
// 我们观察如下代码块,s变量从声明那一刻开始知道作用域结束时都是有效的。
{ // 变量s在这里无效,因为它尚未声明
let s = "rust"; // 声明后s开始有效
} // 作用域结束,s不再有效

String类型

在Rust中,除了硬编码进程序的字符串字面量,还有第二种字符串类型:String,String类型的变量可以被修改,能够存储在编译时未知大小的文本。

使用from函数基于字符串字面量来创建String:

1
let mut s = String::from("rust");	// 加上mut关键字表示其可以被修改。

字符串字面量值不可以被修改,而String类型时可变的,这是因为两种类型对于内存的处理方式不同。