From 57180fa4a3b191892e6a49b8c2cfe5d73bd334a6 Mon Sep 17 00:00:00 2001 From: lijinpeng Date: Sun, 9 Jan 2022 14:53:50 +0800 Subject: [PATCH 1/3] Minor update in comment.md --- book/contents/advance/comment.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/book/contents/advance/comment.md b/book/contents/advance/comment.md index 15a8b6c7..01ac52f9 100644 --- a/book/contents/advance/comment.md +++ b/book/contents/advance/comment.md @@ -267,8 +267,8 @@ pub fn add_one(x: i32) -> Option { } ``` -此处的**[`Option`]**就是一个链接,指向了标准库中的`Option`枚举类型,有两种方式可以进行跳转: -- 在IDE中,使用`Command + 鼠标左键`(mac系统下) +此处的 **[`Option`]** 就是一个链接,指向了标准库中的`Option`枚举类型,有两种方式可以进行跳转: +- 在IDE中,使用`Command + 鼠标左键`(mac系统下),`CTRL + 鼠标左键`(win系统下) - 在文档中直接点击链接 再比如,还可以使用路径的方式跳转: @@ -409,7 +409,7 @@ use art::utils::mix; fn main() { let blue = PrimaryColor::Blue; let yellow = PrimaryColor::Yellow; - println!("{:?}",mix(blue, yellow)); + println!("{:?}",mix(blue, yellow)); } ``` From 5ca0c6dec799d8296faa61346c958f91ee59e0c0 Mon Sep 17 00:00:00 2001 From: lijinpeng Date: Sun, 9 Jan 2022 15:23:43 +0800 Subject: [PATCH 2/3] Minor update in custom-type.md --- book/contents/advance/custom-type.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/book/contents/advance/custom-type.md b/book/contents/advance/custom-type.md index 5f15aa2e..6f379004 100644 --- a/book/contents/advance/custom-type.md +++ b/book/contents/advance/custom-type.md @@ -13,7 +13,7 @@ 一箩筐的理由~~ 让我们先从第二点讲起。 #### 为外部类型实现外部特征 -在之前的章节中,我们有讲过如果在外部类型上实现外部特征必须使用`newtype`的方式,否则你就得遵循孤儿规则:要为类型`A`实现特征`T`,那么`A`或者`T`必须有一个在当前的作用范围内。 +在之前的章节中,我们有讲过如果在外部类型上实现外部特征必须使用`newtype`的方式,否则你就得遵循孤儿规则:要为类型`A`实现特征`T`,那么`A`或者`T`必须至少有一个在当前的作用范围内。 例如, 如果想使用`println!("{}",v)`的方式去格式化输出一个动态数组`Vec`,以期给用户提供更加清晰可读的内容,那么就需要为`Vec`实现`Display`特征,但是这里有一个问题:`Vec`类型定义在标准库中,`Display`亦然, 这时就可以祭出大杀器`newtype`来解决: ```rust @@ -56,12 +56,12 @@ impl Add for Meters { } } fn main() { - let d = calculate_distance(Meters(10), Meters(20)); - println!("{}",d); + let d = calculate_distance(Meters(10), Meters(20)); + println!("{}",d); } fn calculate_distance(d1: Meters,d2: Meters) -> Meters { - d1 + d2 + d1 + d2 } ``` @@ -79,7 +79,7 @@ struct Meters(u32); fn main() { let i: u32 = 2; - assert_eq!(i.pow(2),4); + assert_eq!(i.pow(2),4); let n = Meters(i); // 下面的代码将报错,因为`Meters`类型上没有`pow`方法 From 660d2c4033f4fab38483b56d255995b1a3b81a9e Mon Sep 17 00:00:00 2001 From: chenxuuu Date: Mon, 10 Jan 2022 10:15:00 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=9B=B4=E6=AD=A3=E9=94=99=E5=88=AB?= =?UTF-8?q?=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- book/contents/appendix/rust-version.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/contents/appendix/rust-version.md b/book/contents/appendix/rust-version.md index 5872dfee..7191f05b 100644 --- a/book/contents/appendix/rust-version.md +++ b/book/contents/appendix/rust-version.md @@ -17,7 +17,7 @@ *Cargo.toml* 中的 `edition` 字段表明代码应该使用哪个版本编译。如果该字段不存在,其默认为 `2021` 以提供后向兼容性。 -每个项目都可以选择不同于默认的 2021 edition 的版本。这样,版本可能会包含不兼容的修改,比如新版本中新增的关键字可能会与老代码中的标识符冲突并导致错误。不过,除非你选择应用这些修改,否则旧代码依然能够被便衣,即便你升级了编译器版本。 +每个项目都可以选择不同于默认的 2021 edition 的版本。这样,版本可能会包含不兼容的修改,比如新版本中新增的关键字可能会与老代码中的标识符冲突并导致错误。不过,除非你选择应用这些修改,否则旧代码依然能够被编译,即便你升级了编译器版本。 所有 Rust 编译器都支持任何之前存在的编译器版本,并可以链接任何支持版本的包。编译器修改只影响最初的解析代码的过程。因此,如果你使用 Rust 2021 而某个依赖使用 Rust 2018,你的项目仍旧能够编译并使用该依赖。反之,若项目使用 Rust 2018 而依赖使用 Rust 2021 亦可工作。