Rust中的所有权和借用的关系图

英文原文地址:https://rufflewind.com/2017-02-15/rust-move-copy-borrow

下面是Rust语言中移动,复制和借用的图形描述。这些概念中的大多数都是Rust特有的,因此是许多学习者的常见绊脚石。

为了避免图形混乱,我试图将文本保持在最低限度。它并不意味着可以替代各种教程,但对于喜欢直观地理解概念的程序员来说,更多的是不同的观点。如果您正在学习Rust并且发现这些图形很有用,我建议使用这些图表注释您自己的代码以帮助巩固概念:)
Rust中的所有权和借用的关系图_第1张图片
您可以通过单击图像放大。您也可以将其作为SVG或PDF获取。

上面的两个图描绘了您拥有的数据的两种主要语义:移动语义或复制语义。

移动语义(⤳)上的图片看起来几乎太简单了。这里没有欺骗:移动语义很奇怪,因为大多数语言都允许变量被程序员使用多次。这与现实世界的大部分形成鲜明对比:我不能只是给别人一支笔,仍然用它来写作!在Rust中,任何类型未实现Copy特征的变量都具有移动语义,并且行为如图所示。
复制语义(⎘)保留用于实现Copy特征的类型。在这种情况下,每次使用对象都会产生副本,如分叉所示。
中央的两个图描绘了两种方式,你可以借用你拥有的对象,以及每个提供的对象。

对于可变借用,我使用锁定符号()来表示原始对象在借用期间被有效锁定,使其无法使用。
相反,对于非可变借用,我使用雪花符号(❄)来表示原始对象仅被冻结:您仍然可以使用更多不可变引用,但是您不能移动或接受它的可变引用。
在这两个图中,是我在参考文献的生命周期中选择的名称。我故意使用希腊字母,因为目前在Rust中没有具体生命周期的语法。’ρ

最后两个数字总结了两种参考文献之间的主要差异和相似之处,包括图像和文本形式。“ 外部 ”限定符很重要,因为你仍然可以通过Cell类似的东西进行内部可变性。
资源下载
[资源下载]https://github.com/ai-word
Rust中的所有权和借用的关系图_第2张图片

你可能感兴趣的:(7.Rust知识-应用笔记)