Merge pull request #147 from 1132719438/main

Small updates in comment and custom-type chapter
pull/149/head
Sunface 3 years ago committed by GitHub
commit a43a1ebf38
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -267,8 +267,8 @@ pub fn add_one(x: i32) -> Option<i32> {
} }
``` ```
此处的**[`Option`]**就是一个链接,指向了标准库中的`Option`枚举类型,有两种方式可以进行跳转: 此处的 **[`Option`]** 就是一个链接,指向了标准库中的`Option`枚举类型,有两种方式可以进行跳转:
- 在IDE中使用`Command + 鼠标左键`(mac系统下) - 在IDE中使用`Command + 鼠标左键`(mac系统下)`CTRL + 鼠标左键`(win系统下)
- 在文档中直接点击链接 - 在文档中直接点击链接
再比如,还可以使用路径的方式跳转: 再比如,还可以使用路径的方式跳转:
@ -409,7 +409,7 @@ use art::utils::mix;
fn main() { fn main() {
let blue = PrimaryColor::Blue; let blue = PrimaryColor::Blue;
let yellow = PrimaryColor::Yellow; let yellow = PrimaryColor::Yellow;
println!("{:?}",mix(blue, yellow)); println!("{:?}",mix(blue, yellow));
} }
``` ```

@ -13,7 +13,7 @@
一箩筐的理由~~ 让我们先从第二点讲起。 一箩筐的理由~~ 让我们先从第二点讲起。
#### 为外部类型实现外部特征 #### 为外部类型实现外部特征
在之前的章节中,我们有讲过如果在外部类型上实现外部特征必须使用`newtype`的方式,否则你就得遵循孤儿规则:要为类型`A`实现特征`T`,那么`A`或者`T`必须有一个在当前的作用范围内。 在之前的章节中,我们有讲过如果在外部类型上实现外部特征必须使用`newtype`的方式,否则你就得遵循孤儿规则:要为类型`A`实现特征`T`,那么`A`或者`T`必须至少有一个在当前的作用范围内。
例如, 如果想使用`println!("{}",v)`的方式去格式化输出一个动态数组`Vec`,以期给用户提供更加清晰可读的内容,那么就需要为`Vec`实现`Display`特征,但是这里有一个问题:`Vec`类型定义在标准库中,`Display`亦然, 这时就可以祭出大杀器`newtype`来解决: 例如, 如果想使用`println!("{}",v)`的方式去格式化输出一个动态数组`Vec`,以期给用户提供更加清晰可读的内容,那么就需要为`Vec`实现`Display`特征,但是这里有一个问题:`Vec`类型定义在标准库中,`Display`亦然, 这时就可以祭出大杀器`newtype`来解决:
```rust ```rust
@ -56,12 +56,12 @@ impl Add for Meters {
} }
} }
fn main() { fn main() {
let d = calculate_distance(Meters(10), Meters(20)); let d = calculate_distance(Meters(10), Meters(20));
println!("{}",d); println!("{}",d);
} }
fn calculate_distance(d1: Meters,d2: Meters) -> Meters { fn calculate_distance(d1: Meters,d2: Meters) -> Meters {
d1 + d2 d1 + d2
} }
``` ```
@ -79,7 +79,7 @@ struct Meters(u32);
fn main() { fn main() {
let i: u32 = 2; let i: u32 = 2;
assert_eq!(i.pow(2),4); assert_eq!(i.pow(2),4);
let n = Meters(i); let n = Meters(i);
// 下面的代码将报错,因为`Meters`类型上没有`pow`方法 // 下面的代码将报错,因为`Meters`类型上没有`pow`方法

Loading…
Cancel
Save