diff --git a/src/chapter_3/chapter_3_7_2.md b/src/chapter_3/chapter_3_7_2.md index a90e557..75dc110 100644 --- a/src/chapter_3/chapter_3_7_2.md +++ b/src/chapter_3/chapter_3_7_2.md @@ -42,7 +42,7 @@ fn print(s: String) -> String { ![注释](../../assets/10.png) -获取变量的引用,称之为借用。通过借用,允许使用被引用变量绑定的值,同时又没有移动该变量的所有权。前面的示例代码可以变成如下: +**获取变量的引用,称之为借用** 。通过借用,允许使用被引用变量绑定的值,同时又没有移动该变量的所有权。前面的示例代码可以变成如下: ```Rust fn main() { let s2 = String::from("hello"); @@ -114,7 +114,7 @@ fn change(some_string: &mut String) { } // 花括号之前为a的作用域结束位置 ``` -引用的作用域和变量的作用域有些区别,在老版本编译器(Rust 1.31 之前)中,引用的作用域和变量的作用域一样,也是从定义的位置开始到花括号之前结束,如下: +引用的作用域和变量的作用域有些区别,**在老版本编译器(Rust 1.31 之前)中,引用的作用域和变量的作用域一样,也是从定义的位置开始到花括号之前结束**,如下: ```Rust { ... @@ -123,7 +123,7 @@ fn change(some_string: &mut String) { .... }// 花括号之前为r的作用域结束位置 ``` -在新版本编译器中,引用作用域的结束位置从花括号变成最后一次使用的位置,如下: +**在新版本编译器中,引用作用域的结束位置从花括号变成最后一次使用的位置**,如下: ```Rust { ... @@ -135,7 +135,7 @@ fn change(some_string: &mut String) { ``` - 使用可变引用的限制 -(1)限制一:同一作用域,特定数据只能有一个可变引用。如下代码会报错: +(1)限制一:**同一作用域,特定数据只能有一个可变引用**。如下代码会报错: ```Rust fn main() { let mut s1 = String::from("hello"); @@ -177,7 +177,7 @@ fn main() { } ``` -(2)限制二:同一作用域,可变引用和不可变引用不能同时存在。如下代码编译错误: +(2)限制二:**同一作用域,可变引用和不可变引用不能同时存在**。如下代码编译错误: ```Rust fn main() { let mut s = String::from("hello"); @@ -203,9 +203,9 @@ fn main() { } // 老编译器中: r1、r2、r3的作用域都是在花括号之前结束 ``` -Rust这样设计的原因: +**Rust这样设计的原因**: -通过此设计,防止同一时间对同一数据存在多个可变引用。 这样Rust 在编译时就避免了数据竞争。数据竞争(data race)类似于竞态条件,它可由这三个行为造成: +通过此设计,防止同一时间对同一数据存在多个可变引用。 这样Rust 在编译时就避免了数据竞争。**数据竞争(data race)** 类似于竞态条件,它可由这三个行为造成: - 两个或更多指针同时访问同一数据。 - 至少有一个指针被用来写入数据。