mirror of
https://github.com/RustyCab/LearnRustEasy.git
synced 2026-02-07 12:24:04 +08:00
Update chapter_3_7.md
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
## 3.7.所有权(Ownership) ---------- andy
|
||||
## 3.7.所有权(Ownership)
|
||||
### 3.7.1 所有权介绍
|
||||
所有权是Rust最为与众不同的特性,它让Rust无需垃圾回收即可保证内存安全。
|
||||
|
||||
@@ -207,7 +207,7 @@ fn main() {
|
||||
不过不是所有的类型都能使用clone方法进行深拷贝,只有实现了Clone trait的类型才能调用该方法。
|
||||
|
||||
#### 7. Copy
|
||||
按照Rust所有权规则第二条,在任意时刻,值有且仅有一个所有者。所以当let a = b发生时,就将变量b拥有的值移到了a上,此时a应该回到未初始状态,但实际情况并不一定。不一定的原因是,部分类型实现了Copy trait,在值移动时会对值进行自动拷贝,能让变量a仍拥有原来的值。
|
||||
按照Rust所有权规则第二条,**在任意时刻,值有且仅有一个所有者**。所以当let a = b发生时,就将变量b拥有的值移到了a上,此时a应该回到未初始状态,但实际情况并不一定。不一定的原因是,部分类型实现了Copy trait,在值移动时会对值进行自动拷贝,能让变量a仍拥有原来的值。
|
||||
|
||||
Rust中,默认实现了Copy trait的类型有:
|
||||
|
||||
@@ -264,4 +264,4 @@ fn takes_and_gives_back(a_string: String) -> String { // a_string 进入作用
|
||||
}
|
||||
```
|
||||
|
||||
关于所有权的总结:将值赋给另一个变量时移动它。当持有堆中数据值的变量离开作用域时,其值将通过 drop函数(后续讲解) 被清理掉,除非数据被移动为另一个变量所有。
|
||||
**关于所有权的总结:将值赋给另一个变量时移动它。当持有堆中数据值的变量离开作用域时,其值将通过 drop函数(后续讲解) 被清理掉,除非数据被移动为另一个变量所有。**
|
||||
|
||||
Reference in New Issue
Block a user