From 0612b0c95490e95adabba4485427f9a1f03cd9cd Mon Sep 17 00:00:00 2001 From: Davirain Date: Wed, 17 May 2023 16:48:56 +0800 Subject: [PATCH] revert --- {src/assets => assets}/1.png | Bin {src/assets => assets}/10.png | Bin {src/assets => assets}/11.png | Bin {src/assets => assets}/12.png | Bin {src/assets => assets}/13.png | Bin {src/assets => assets}/14.png | Bin {src/assets => assets}/15.png | Bin {src/assets => assets}/16.png | Bin {src/assets => assets}/17.png | Bin {src/assets => assets}/18.png | Bin {src/assets => assets}/19.png | Bin {src/assets => assets}/2.png | Bin {src/assets => assets}/20.png | Bin {src/assets => assets}/21.png | Bin {src/assets => assets}/22.png | Bin {src/assets => assets}/23.png | Bin {src/assets => assets}/24.png | Bin {src/assets => assets}/25.png | Bin {src/assets => assets}/26.png | Bin {src/assets => assets}/27.png | Bin {src/assets => assets}/28.png | Bin {src/assets => assets}/29.png | Bin {src/assets => assets}/3.png | Bin {src/assets => assets}/30.png | Bin {src/assets => assets}/31.png | Bin {src/assets => assets}/32.png | Bin {src/assets => assets}/33.png | Bin {src/assets => assets}/34.png | Bin {src/assets => assets}/35.png | Bin {src/assets => assets}/36.png | Bin {src/assets => assets}/37.png | Bin {src/assets => assets}/38.png | Bin {src/assets => assets}/39.png | Bin {src/assets => assets}/4.png | Bin {src/assets => assets}/40.png | Bin {src/assets => assets}/41.png | Bin {src/assets => assets}/42.png | Bin {src/assets => assets}/43.png | Bin {src/assets => assets}/44.png | Bin {src/assets => assets}/45.png | Bin {src/assets => assets}/46.png | Bin {src/assets => assets}/47.png | Bin {src/assets => assets}/48.png | Bin {src/assets => assets}/49.png | Bin {src/assets => assets}/5.png | Bin {src/assets => assets}/50.png | Bin {src/assets => assets}/51.png | Bin {src/assets => assets}/52.png | Bin {src/assets => assets}/53.png | Bin {src/assets => assets}/54.png | Bin {src/assets => assets}/55.png | Bin {src/assets => assets}/56.png | Bin {src/assets => assets}/57.png | Bin {src/assets => assets}/58.png | Bin {src/assets => assets}/59.png | Bin {src/assets => assets}/6.png | Bin {src/assets => assets}/60.png | Bin {src/assets => assets}/61.png | Bin {src/assets => assets}/62.png | Bin {src/assets => assets}/63.png | Bin {src/assets => assets}/7.png | Bin {src/assets => assets}/8.png | Bin {src/assets => assets}/9.png | Bin src/chapter_2.md | 4 ++-- src/chapter_3/chapter_3_6.md | 6 +++--- src/chapter_3/chapter_3_7_1.md | 10 +++++----- src/chapter_3/chapter_3_7_2.md | 6 +++--- src/chapter_3/chapter_3_7_3.md | 2 +- 68 files changed, 14 insertions(+), 14 deletions(-) rename {src/assets => assets}/1.png (100%) rename {src/assets => assets}/10.png (100%) rename {src/assets => assets}/11.png (100%) rename {src/assets => assets}/12.png (100%) rename {src/assets => assets}/13.png (100%) rename {src/assets => assets}/14.png (100%) rename {src/assets => assets}/15.png (100%) rename {src/assets => assets}/16.png (100%) rename {src/assets => assets}/17.png (100%) rename {src/assets => assets}/18.png (100%) rename {src/assets => assets}/19.png (100%) rename {src/assets => assets}/2.png (100%) rename {src/assets => assets}/20.png (100%) rename {src/assets => assets}/21.png (100%) rename {src/assets => assets}/22.png (100%) rename {src/assets => assets}/23.png (100%) rename {src/assets => assets}/24.png (100%) rename {src/assets => assets}/25.png (100%) rename {src/assets => assets}/26.png (100%) rename {src/assets => assets}/27.png (100%) rename {src/assets => assets}/28.png (100%) rename {src/assets => assets}/29.png (100%) rename {src/assets => assets}/3.png (100%) rename {src/assets => assets}/30.png (100%) rename {src/assets => assets}/31.png (100%) rename {src/assets => assets}/32.png (100%) rename {src/assets => assets}/33.png (100%) rename {src/assets => assets}/34.png (100%) rename {src/assets => assets}/35.png (100%) rename {src/assets => assets}/36.png (100%) rename {src/assets => assets}/37.png (100%) rename {src/assets => assets}/38.png (100%) rename {src/assets => assets}/39.png (100%) rename {src/assets => assets}/4.png (100%) rename {src/assets => assets}/40.png (100%) rename {src/assets => assets}/41.png (100%) rename {src/assets => assets}/42.png (100%) rename {src/assets => assets}/43.png (100%) rename {src/assets => assets}/44.png (100%) rename {src/assets => assets}/45.png (100%) rename {src/assets => assets}/46.png (100%) rename {src/assets => assets}/47.png (100%) rename {src/assets => assets}/48.png (100%) rename {src/assets => assets}/49.png (100%) rename {src/assets => assets}/5.png (100%) rename {src/assets => assets}/50.png (100%) rename {src/assets => assets}/51.png (100%) rename {src/assets => assets}/52.png (100%) rename {src/assets => assets}/53.png (100%) rename {src/assets => assets}/54.png (100%) rename {src/assets => assets}/55.png (100%) rename {src/assets => assets}/56.png (100%) rename {src/assets => assets}/57.png (100%) rename {src/assets => assets}/58.png (100%) rename {src/assets => assets}/59.png (100%) rename {src/assets => assets}/6.png (100%) rename {src/assets => assets}/60.png (100%) rename {src/assets => assets}/61.png (100%) rename {src/assets => assets}/62.png (100%) rename {src/assets => assets}/63.png (100%) rename {src/assets => assets}/7.png (100%) rename {src/assets => assets}/8.png (100%) rename {src/assets => assets}/9.png (100%) diff --git a/src/assets/1.png b/assets/1.png similarity index 100% rename from src/assets/1.png rename to assets/1.png diff --git a/src/assets/10.png b/assets/10.png similarity index 100% rename from src/assets/10.png rename to assets/10.png diff --git a/src/assets/11.png b/assets/11.png similarity index 100% rename from src/assets/11.png rename to assets/11.png diff --git a/src/assets/12.png b/assets/12.png similarity index 100% rename from src/assets/12.png rename to assets/12.png diff --git a/src/assets/13.png b/assets/13.png similarity index 100% rename from src/assets/13.png rename to assets/13.png diff --git a/src/assets/14.png b/assets/14.png similarity index 100% rename from src/assets/14.png rename to assets/14.png diff --git a/src/assets/15.png b/assets/15.png similarity index 100% rename from src/assets/15.png rename to assets/15.png diff --git a/src/assets/16.png b/assets/16.png similarity index 100% rename from src/assets/16.png rename to assets/16.png diff --git a/src/assets/17.png b/assets/17.png similarity index 100% rename from src/assets/17.png rename to assets/17.png diff --git a/src/assets/18.png b/assets/18.png similarity index 100% rename from src/assets/18.png rename to assets/18.png diff --git a/src/assets/19.png b/assets/19.png similarity index 100% rename from src/assets/19.png rename to assets/19.png diff --git a/src/assets/2.png b/assets/2.png similarity index 100% rename from src/assets/2.png rename to assets/2.png diff --git a/src/assets/20.png b/assets/20.png similarity index 100% rename from src/assets/20.png rename to assets/20.png diff --git a/src/assets/21.png b/assets/21.png similarity index 100% rename from src/assets/21.png rename to assets/21.png diff --git a/src/assets/22.png b/assets/22.png similarity index 100% rename from src/assets/22.png rename to assets/22.png diff --git a/src/assets/23.png b/assets/23.png similarity index 100% rename from src/assets/23.png rename to assets/23.png diff --git a/src/assets/24.png b/assets/24.png similarity index 100% rename from src/assets/24.png rename to assets/24.png diff --git a/src/assets/25.png b/assets/25.png similarity index 100% rename from src/assets/25.png rename to assets/25.png diff --git a/src/assets/26.png b/assets/26.png similarity index 100% rename from src/assets/26.png rename to assets/26.png diff --git a/src/assets/27.png b/assets/27.png similarity index 100% rename from src/assets/27.png rename to assets/27.png diff --git a/src/assets/28.png b/assets/28.png similarity index 100% rename from src/assets/28.png rename to assets/28.png diff --git a/src/assets/29.png b/assets/29.png similarity index 100% rename from src/assets/29.png rename to assets/29.png diff --git a/src/assets/3.png b/assets/3.png similarity index 100% rename from src/assets/3.png rename to assets/3.png diff --git a/src/assets/30.png b/assets/30.png similarity index 100% rename from src/assets/30.png rename to assets/30.png diff --git a/src/assets/31.png b/assets/31.png similarity index 100% rename from src/assets/31.png rename to assets/31.png diff --git a/src/assets/32.png b/assets/32.png similarity index 100% rename from src/assets/32.png rename to assets/32.png diff --git a/src/assets/33.png b/assets/33.png similarity index 100% rename from src/assets/33.png rename to assets/33.png diff --git a/src/assets/34.png b/assets/34.png similarity index 100% rename from src/assets/34.png rename to assets/34.png diff --git a/src/assets/35.png b/assets/35.png similarity index 100% rename from src/assets/35.png rename to assets/35.png diff --git a/src/assets/36.png b/assets/36.png similarity index 100% rename from src/assets/36.png rename to assets/36.png diff --git a/src/assets/37.png b/assets/37.png similarity index 100% rename from src/assets/37.png rename to assets/37.png diff --git a/src/assets/38.png b/assets/38.png similarity index 100% rename from src/assets/38.png rename to assets/38.png diff --git a/src/assets/39.png b/assets/39.png similarity index 100% rename from src/assets/39.png rename to assets/39.png diff --git a/src/assets/4.png b/assets/4.png similarity index 100% rename from src/assets/4.png rename to assets/4.png diff --git a/src/assets/40.png b/assets/40.png similarity index 100% rename from src/assets/40.png rename to assets/40.png diff --git a/src/assets/41.png b/assets/41.png similarity index 100% rename from src/assets/41.png rename to assets/41.png diff --git a/src/assets/42.png b/assets/42.png similarity index 100% rename from src/assets/42.png rename to assets/42.png diff --git a/src/assets/43.png b/assets/43.png similarity index 100% rename from src/assets/43.png rename to assets/43.png diff --git a/src/assets/44.png b/assets/44.png similarity index 100% rename from src/assets/44.png rename to assets/44.png diff --git a/src/assets/45.png b/assets/45.png similarity index 100% rename from src/assets/45.png rename to assets/45.png diff --git a/src/assets/46.png b/assets/46.png similarity index 100% rename from src/assets/46.png rename to assets/46.png diff --git a/src/assets/47.png b/assets/47.png similarity index 100% rename from src/assets/47.png rename to assets/47.png diff --git a/src/assets/48.png b/assets/48.png similarity index 100% rename from src/assets/48.png rename to assets/48.png diff --git a/src/assets/49.png b/assets/49.png similarity index 100% rename from src/assets/49.png rename to assets/49.png diff --git a/src/assets/5.png b/assets/5.png similarity index 100% rename from src/assets/5.png rename to assets/5.png diff --git a/src/assets/50.png b/assets/50.png similarity index 100% rename from src/assets/50.png rename to assets/50.png diff --git a/src/assets/51.png b/assets/51.png similarity index 100% rename from src/assets/51.png rename to assets/51.png diff --git a/src/assets/52.png b/assets/52.png similarity index 100% rename from src/assets/52.png rename to assets/52.png diff --git a/src/assets/53.png b/assets/53.png similarity index 100% rename from src/assets/53.png rename to assets/53.png diff --git a/src/assets/54.png b/assets/54.png similarity index 100% rename from src/assets/54.png rename to assets/54.png diff --git a/src/assets/55.png b/assets/55.png similarity index 100% rename from src/assets/55.png rename to assets/55.png diff --git a/src/assets/56.png b/assets/56.png similarity index 100% rename from src/assets/56.png rename to assets/56.png diff --git a/src/assets/57.png b/assets/57.png similarity index 100% rename from src/assets/57.png rename to assets/57.png diff --git a/src/assets/58.png b/assets/58.png similarity index 100% rename from src/assets/58.png rename to assets/58.png diff --git a/src/assets/59.png b/assets/59.png similarity index 100% rename from src/assets/59.png rename to assets/59.png diff --git a/src/assets/6.png b/assets/6.png similarity index 100% rename from src/assets/6.png rename to assets/6.png diff --git a/src/assets/60.png b/assets/60.png similarity index 100% rename from src/assets/60.png rename to assets/60.png diff --git a/src/assets/61.png b/assets/61.png similarity index 100% rename from src/assets/61.png rename to assets/61.png diff --git a/src/assets/62.png b/assets/62.png similarity index 100% rename from src/assets/62.png rename to assets/62.png diff --git a/src/assets/63.png b/assets/63.png similarity index 100% rename from src/assets/63.png rename to assets/63.png diff --git a/src/assets/7.png b/assets/7.png similarity index 100% rename from src/assets/7.png rename to assets/7.png diff --git a/src/assets/8.png b/assets/8.png similarity index 100% rename from src/assets/8.png rename to assets/8.png diff --git a/src/assets/9.png b/assets/9.png similarity index 100% rename from src/assets/9.png rename to assets/9.png diff --git a/src/chapter_2.md b/src/chapter_2.md index ce787eb..6d46ce7 100644 --- a/src/chapter_2.md +++ b/src/chapter_2.md @@ -149,7 +149,7 @@ cargo new hello_world 创建后,可以看到整个目录的结构如下: -![目录结构](./assets/62.png) +![目录结构](../assets/62.png) 其中Cargo.toml是项目的配置文件,src为源代码目录,main.rs为主程序文件。 @@ -172,7 +172,7 @@ cargo run ``` 运行结果如下: -![运行结果](./assets/63.png) +![运行结果](../assets/63.png) ### 2.3.4 理解Rust源码的基本结构 下面简单介绍Rust源码的结构。 diff --git a/src/chapter_3/chapter_3_6.md b/src/chapter_3/chapter_3_6.md index b1be7dd..b0b6318 100644 --- a/src/chapter_3/chapter_3_6.md +++ b/src/chapter_3/chapter_3_6.md @@ -1,6 +1,6 @@ ## 3.6 Rust内存模型 ### 3.6.1 Rust程序内存布局 -![注释](../assets/2.png) +![注释](../../assets/2.png) 上图是一张linux系统上Rust程序的内存布局图。在linux操作系统中,会划分固定的区域给内核使用,即上图中的内核空间;应用程序使用的是用户空间。 @@ -38,7 +38,7 @@ fn main() { } ``` 对于上面的代码,在执行第17行和第18行的栈帧示意图如下: -![注释](../assets/3.png) +![注释](../../assets/3.png) 这里需要注意的是两个帧对应同样的内存地址,这是因为在调用完f1函数后,其对应的栈帧释放(释放的实际意义就是这段内存可以被重新分配了),然后调用f2函数为其分配栈帧时从同样的地址进行分配。 @@ -51,4 +51,4 @@ Rust没有GC,但通过其独特的机制管理内存,程序员不用手动 栈中存储的所有数据都必须占用(在编译时就)已知且固定的大小。编译时大小未知或可能变化的数据,存储在堆上。 数据存放到栈上时,是直接将数据放到栈内存。 当数据需要存放到堆上时,内存分配器则是根据数据的大小,在堆内存找到合适大小的空区域存放,把它标记为已使用,并返回一个表示该位置地址的指针。该指针存储在栈上,当需要访问具体的数据时,必须先访问指针,然后通过指针找到堆上的位置,从而访问数据。这个过程可以用下图表示: -![注释](../assets/4.png) +![注释](../../assets/4.png) diff --git a/src/chapter_3/chapter_3_7_1.md b/src/chapter_3/chapter_3_7_1.md index 1a698d7..f90a74e 100644 --- a/src/chapter_3/chapter_3_7_1.md +++ b/src/chapter_3/chapter_3_7_1.md @@ -139,7 +139,7 @@ fn main() { ``` 在第2行定义String类型时,并不能确定最终字符串的大小,所以字符串内容本身应该存储在堆上。结合什么String类型的本质的内容,可以得到String类型的存储如下: -![注释](../assets/5.png) +![注释](../../assets/5.png) String类型本身是三个字段(指针、长度、容量),在编译时是已知的大小,存储在栈上;String类型绑定的字符串(在上面代码中是“AB”)在编译时大小未知,是运行时在堆上分配内存,分配后的内存地址保存在String类型的指针字段中,内存大小保存在cap字段中,内存上存储的字符串长度保存在len字段中。 @@ -171,11 +171,11 @@ fn main() { ``` s是String类型,字符串“Hello world!”是存储在堆内存上的,其内存布局如下: -![注释](../assets/6.png) +![注释](../../assets/6.png) 当执行let s1 = s后,内存布局如下: -![注释](../assets/7.png) +![注释](../../assets/7.png) 当let s1 = s执行后,就发生了所有权的转移,String类型值的所有权从s转移到了s1。此时Rust认为原来的s不再有效。因此,上面代码第4行打开编译将会出错。 @@ -185,14 +185,14 @@ s是String类型,字符串“Hello world!”是存储在堆内存上的, 只拷贝栈上的内容,就叫做浅拷贝。 对于上面的String类型,执行let s1 = s后,只把s的ptr、len、cap中的值拷贝给s1的ptr、len、cap的值,这种就叫做浅拷贝。浅拷贝发生后,s的ptr和s1的ptr都指向同样的堆内存。内存布局如下: -![注释](../assets/8.png) +![注释](../../assets/8.png) - 深拷贝 除了拷贝栈上的内容外,还拷贝堆内存中的内容,就叫做深拷贝。 对于上面的String类型,执行let s1 = s后,除了把s的len、cap中的值拷贝给s1的len、cap外,还在堆上重新分配一块内存,将s的ptr指向的堆内存的内容拷贝到这块内存,然后s1的ptr指向这块内存,这种拷贝就叫做深拷贝。深拷贝发生后,s的ptr和s1的ptr指向不同的堆内存,但是堆内存中存储的内容一样。深拷贝发生后的内存布局如下: -![注释](../assets/9.png) +![注释](../../assets/9.png) 显然,**Rust中变量赋值(Rust中叫所有权转移)使用的是浅拷贝**。 diff --git a/src/chapter_3/chapter_3_7_2.md b/src/chapter_3/chapter_3_7_2.md index 64a9652..c322645 100644 --- a/src/chapter_3/chapter_3_7_2.md +++ b/src/chapter_3/chapter_3_7_2.md @@ -40,7 +40,7 @@ fn print(s: String) -> String { ``` 上面代码中,变量a、b、c、d的内存布局如下: -![注释](../assets/10.png) +![注释](../../assets/10.png) **获取变量的引用,称之为借用** 。通过借用,允许使用被引用变量绑定的值,同时又没有移动该变量的所有权。前面的示例代码可以变成如下: ```Rust @@ -240,11 +240,11 @@ int main() ``` 在执行第14行前,其内存布局为: -![注释](../assets/11.png) +![注释](../../assets/11.png) 当执行第14行后,变成如下: -![注释](../assets/12.png) +![注释](../../assets/12.png) 第14行执行后,ptr就变成了一个悬垂指针(或者交悬垂引用),然后在第16行继续使用ptr,则会发生错误。 diff --git a/src/chapter_3/chapter_3_7_3.md b/src/chapter_3/chapter_3_7_3.md index 11ceb96..b9135a1 100644 --- a/src/chapter_3/chapter_3_7_3.md +++ b/src/chapter_3/chapter_3_7_3.md @@ -44,7 +44,7 @@ fn main() { &str和&String的内存布局如下: -![注释](../assets/13.png) +![注释](../../assets/13.png) #### 3. 其它Slice 数组的Slice,如下: