在Rust中没有垃圾回收器(garbage collector),也无需开发者亲自分配和释放内存。Rust管理内内存的方式是通过其所有权系统,编译器在编译原程序会根据一系列的规则进行检查,所以Rust程序编译速度会比较慢,但是在运行时,所有权系统的任何功能都不会减慢程序运行的速度。
所有权规则
- Rust中的每一个值都有一个被称为其所有者的变量
- 值在任一时刻有且只有一个所有者
- 当所有者离开作用域,这个值将被丢弃
变量作用域
Rust中字符串值是被硬编码进程序代码中的,我们尝试声明一个字符串字面量s。
当s进入作用域时,它就是有效的,直到它离开作用为止。
1 | // 我们观察如下代码块,s变量从声明那一刻开始知道作用域结束时都是有效的。 |
String类型
在Rust中,除了硬编码进程序的字符串字面量,还有第二种字符串类型:String,String类型的变量可以被修改,能够存储在编译时未知大小的文本。
使用from函数基于字符串字面量来创建String:
1 | let mut s = String::from("rust"); // 加上mut关键字表示其可以被修改。 |
字符串字面量值不可以被修改,而String类型时可变的,这是因为两种类型对于内存的处理方式不同。