enhance:追加总结内容。

This commit is contained in:
徐涛 2022-03-16 13:09:00 +08:00
parent 23b614c36c
commit 298c0ed3e5

View File

@ -427,3 +427,9 @@ fn start_sort_thread(mut persons: Vec<Person>, score: Score) -> thread::JoinHand
为了能够让这个示例正常工作,就需要把`persons`和`score`“偷”到闭包里。要完成这个操作需要使用Rust提供的一个关键字`move`进行标识。`move`关键字会提示Rust闭包对于上下文中的引用不是借用而是强行偷走此时闭包将会获得其偷走的引用的所有权。闭包的这个转移的特性也同样遵守Rust中关于所有权转移和借用的规则。
虽然被强行转移的引用并不会在闭包结束后被转移回来,但是如果在闭包之后还是需要使用被转移的引用内容,可以事先把会被转移的内容保存一个副本,然后将闭包限制在新副本中。
## 总结
其实对于Rust中的所有权机制的理解并不难如果将Rust中所有的内存区域内容都看作是可以被消耗的资源的话那么就可以比较容易的理解所有权机制了。如果一个资源被从一个处理过程转交给了另一个处理过程那么就是所有权的转移如果一个资源被转交给了另一个处理过程但是资源在被使用完毕以后又转交类回来就可以被理解为资源的借用。但是如果一个资源发生了变化或者是被复制出了一个一模一样的资源那么就是资源的消耗和复制过程了。
其实在实际的程序中没有什么资源是可以经过处理还可以保持原样的。所以在Rust中可以利用所有权机制完善的表现现实中资源的转换、消耗等过程。