@ -20,7 +20,7 @@
在其它语言中,我们用 `var a = "hello world"` 的方式给 `a` 赋值,也就是把等式右边的 `"hello world"` 字符串赋值给变量 `a` ,而在 Rust 中,我们这样写: `let a = "hello world"` ,同时给这个过程起了另一个名字:**变量绑定**。
在其它语言中,我们用 `var a = "hello world"` 的方式给 `a` 赋值,也就是把等式右边的 `"hello world"` 字符串赋值给变量 `a` ,而在 Rust 中,我们这样写: `let a = "hello world"` ,同时给这个过程起了另一个名字:**变量绑定**。
为何不用赋值而用绑定呢(其实你也可以称之为赋值,但是绑定的含义更清晰准确) ?这里就涉及 Rust 最核心的原则——**所有权**,简单来讲,任何内存对象都是有主人的,而且一般情况下完全属于它的主人,绑定就是把这个对象绑定给一个变量,让这个变量成为它的主人( 聪明的读者应该能猜到,在这种情况下,该对象之前的主人就会丧失对该对象的所有权) ,像极了我们的现实世界,不是吗?
为何不用赋值而用绑定呢(其实你也可以称之为赋值,但是绑定的含义更清晰准确) ?这里就涉及 Rust 最核心的原则——**所有权**,简单来讲,任何内存对象都是有主人的,而且一般情况下完全属于它的主人,绑定就是把这个对象绑定给一个变量,让这个变量成为它的主人( 聪明的读者应该能猜到,在这种情况下,该对象之前的主人就会丧失对该对象的所有权) ,像极了我们的现实世界,不是吗?
至于为何要采用所有权这种复杂的东东,先别急,等时机合适,我们会为你详细道来。
至于为何要采用所有权这种复杂的东东,先别急,等时机合适,我们会为你详细道来。
@ -93,9 +93,9 @@ The value of x is: 5
The value of x is: 6
The value of x is: 6
```
```
选择可变还是不可变,更多的还是取决于你的使用场景,例如不可变可以带来安全性,但是丧失了灵活性和性能(如果你要改变,就要重新创建一个新的变量,这里涉及到内存对象的再分配) 。而可变变量最大的好处就是使用上的灵活性和性能上的提升。
选择可变还是不可变,更多的还是取决于你的使用场景,例如不可变可以带来安全性,但是丧失了灵活性和性能(如果你要改变,就要重新创建一个新的变量,这里涉及到内存对象的再分配) 。而可变变量最大的好处就是使用上的灵活性和性能上的提升。
例如,在使用大型数据结构或者热点代码路径(被大量频繁调用) 的情形下,在同一内存位置更新实例可能比复制并返回新分配的实例要更快。使用较小的数据结构时,通常创建新的实例并以更具函数式的风格来编写程序,可能会更容易理解,所以值得以较低的性能开销来确保代码清晰。
例如,在使用大型数据结构或者热点代码路径(被大量频繁调用) 的情形下,在同一内存位置更新实例可能比复制并返回新分配的实例要更快。使用较小的数据结构时,通常创建新的实例并以更具函数式的风格来编写程序,可能会更容易理解,所以值得以较低的性能开销来确保代码清晰。
### 变量解构
### 变量解构