Skip to content

Commit f133f56

Browse files
committed
Merge pull request #147 from zonyitoo/master
修复语法高亮及部分审校
2 parents 40291d1 + f189975 commit f133f56

33 files changed

Lines changed: 403 additions & 375 deletions

06-flow/06-01-comment.md

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Rust 代码文件中,通常我们可以看到 3 种注释。
1010

1111
使用 `//` 进行行注释。
1212

13-
```
13+
```rust
1414
// 创建一个绑定
1515
let x = 5;
1616

@@ -21,22 +21,23 @@ let y = 6; // 创建另一个绑定
2121

2222
文档注释使用 ```///```,一般用于函数或结构体(字段)的说明,置于要说明的对象上方。文档注释内部可使用markdown格式的标记语法,可用于 rustdoc 工具的自动文档提取。
2323

24-
/// Adds one to the number given.
25-
///
26-
/// # Examples
27-
///
28-
/// ```
29-
/// let five = 5;
30-
///
31-
/// assert_eq!(6, add_one(5));
32-
/// # fn add_one(x: i32) -> i32 {
33-
/// # x + 1
34-
/// # }
35-
/// ```
36-
fn add_one(x: i32) -> i32 {
37-
x + 1
38-
}
39-
24+
```rust
25+
/// Adds one to the number given.
26+
///
27+
/// # Examples
28+
///
29+
/// ```
30+
/// let five = 5;
31+
///
32+
/// assert_eq!(6, add_one(5));
33+
/// # fn add_one(x: i32) -> i32 {
34+
/// # x + 1
35+
/// # }
36+
/// ```
37+
fn add_one(x: i32) -> i32 {
38+
x + 1
39+
}
40+
```
4041

4142
## 模块注释
4243

06-flow/06-02-condition.md

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,29 +8,29 @@
88

99
Rust 中的 if 表达式基本就是如下几种形式:
1010

11-
```
11+
```rust
1212
// 形式 1
1313
if expr1 {
1414

1515
}
16-
16+
1717
// 形式 2
1818
if expr1 {
1919

2020
}
2121
else {
22-
22+
2323
}
2424

2525
// 形式 3
2626
if expr1 {
27-
27+
2828
}
2929
else if expr2 {
3030
// else if 可多重
3131
}
3232
else {
33-
33+
3434
}
3535

3636
```
@@ -42,7 +42,7 @@ else {
4242

4343
鉴于上述第二点,因为是表达式,所以我们可以写出如下代码:
4444

45-
```
45+
```rust
4646
let x = 5;
4747

4848
let y = if x == 5 {
@@ -54,17 +54,17 @@ let y = if x == 5 {
5454

5555
或者压缩成一行:
5656

57-
```
57+
```rust
5858
let x = 5;
5959

6060
let y = if x == 5 { 10 } else { 15 }; // y: i32
6161
```
6262

63-
## if let
63+
## if let
6464

6565
我们在代码中常常会看到 `if let` 成对出现,这实际上是一个 match 的简化用法。直接举例来说明:
6666

67-
```
67+
```rust
6868
let x = Some(5);
6969

7070
if let Some(y) = x {
@@ -81,9 +81,9 @@ else {
8181

8282
```
8383

84-
上面代码等价于
84+
上面代码等价于
8585

86-
```
86+
```rust
8787
let x = Some(5);
8888
match x {
8989
Some(y) => println!("{}", y),
@@ -104,7 +104,7 @@ Rust 中没有类似于 C 的 `switch` 关键字,但它有用于模式匹配
104104

105105
match 的使用非常简单,举例如下:
106106

107-
```
107+
```rust
108108
let x = 5;
109109

110110
match x {
@@ -119,4 +119,3 @@ match x {
119119
}
120120
```
121121
注意,match 也是一个表达式。match 后面会专门论述,请参见 **模式匹配** 这一章。
122-

06-flow/06-03-repeatition.md

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@
1010
## for
1111

1212
for 语句用于遍历一个迭代器。
13-
```
13+
```rust
1414
for var in iterator {
1515
code
1616
}
1717
```
1818
Rust 迭代器返回一系列的元素,每个元素是循环中的一次重复。然后它的值与 var 绑定,它在循环体中有效。每当循环体执行完后,我们从迭代器中取出下一个值,然后我们再重复一遍。当迭代器中不再有值时,for 循环结束。
1919

2020
比如:
21-
```
21+
```rust
2222
for x in 0..10 {
2323
println!("{}", x); // x: i32
2424
}
@@ -39,7 +39,7 @@ for x in 0..10 {
3939

4040
不熟悉迭代器概念的同学可能傻眼了,下面不仿用 C 形式的 for 语句做下对比:
4141

42-
```
42+
```rust
4343
// C 语言的 for 循环例子
4444
for (x = 0; x < 10; x++) {
4545
printf( "%d\n", x );
@@ -57,7 +57,7 @@ for 语句就是迭代器遍历的语法糖。
5757

5858
上述迭代器的形式虽好,但是好像在循环过程中,少了索引信息。Rust 考虑到了这一点,当你需要记录你已经循环了多少次了的时候,你可以使用 `.enumerate()` 函数。比如:
5959

60-
```
60+
```rust
6161
for (i,j) in (5..10).enumerate() {
6262
println!("i = {} and j = {}", i, j);
6363
}
@@ -73,7 +73,7 @@ i = 4 and j = 9
7373
```
7474
再比如:
7575

76-
```
76+
```rust
7777
let lines = "Content of line one\nContent of line two\nContent of line three\nContent of line four".lines();
7878
for (linenumber, line) in lines.enumerate() {
7979
println!("{}: {}", linenumber, line);
@@ -93,15 +93,15 @@ for (linenumber, line) in lines.enumerate() {
9393

9494
Rust 提供了 while 语句,条件表达式为真时,执行语句体。当你不确定应该循环多少次时可选择 while。
9595

96-
```
96+
```rust
9797
while expression {
9898
code
9999
}
100100
```
101101

102102
比如:
103103

104-
```
104+
```rust
105105
let mut x = 5; // mut x: i32
106106
let mut done = false; // mut done: bool
107107

@@ -120,15 +120,15 @@ while !done {
120120

121121
有一种情况,我们经常会遇到,就是写一个无限循环:
122122

123-
```
123+
```rust
124124
while true {
125125
// do something
126126
}
127127
```
128128

129129
针对这种情况,Rust 专门优化提供了一个语句 loop。
130130

131-
```
131+
```rust
132132
loop {
133133
// do something
134134
}
@@ -138,7 +138,7 @@ loop {
138138

139139
比如说,如下代码:
140140

141-
```
141+
```rust
142142
let mut a;
143143
loop {
144144
a = 1;
@@ -158,7 +158,7 @@ do_something(a)
158158

159159
像上面那个 while 例子:
160160

161-
```
161+
```rust
162162
let mut x = 5;
163163
let mut done = false;
164164

@@ -174,7 +174,7 @@ while !done {
174174
```
175175
可以优化成:
176176

177-
```
177+
```rust
178178
let mut x = 5;
179179

180180
loop {
@@ -189,7 +189,7 @@ loop {
189189

190190
下面这个例子演示 continue 的用法:
191191

192-
```
192+
```rust
193193
for x in 0..10 {
194194
if x % 2 == 0 { continue; }
195195

@@ -212,7 +212,7 @@ for x in 0..10 {
212212

213213
如下代码只会在 x 和 y 都为奇数时打印他们:
214214

215-
```
215+
```rust
216216
'outer: for x in 0..10 {
217217
'inner: for y in 0..10 {
218218
if x % 2 == 0 { continue 'outer; } // continues the loop over x
@@ -221,4 +221,3 @@ for x in 0..10 {
221221
}
222222
}
223223
```
224-

07-type/07-01-types.md

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
Rust自带了`bool`类型,其可能值为`true`或者`false`
88
我们可以通过这样的方式去声明它:
9-
```
9+
```rust
1010
let is_she_love_me = false;
1111
let mut is_he_love_me: bool = true;
1212
```
@@ -17,7 +17,7 @@ let mut is_he_love_me: bool = true;
1717
在Rust中,一个`char`类型表示一个*Unicode*字符,这也就意味着,在某些语言里代表一个字符(8bit)的char,在Rust里实际上是四个字节(32bit)。
1818
同时,我们可以将各种奇怪的非中文字符随心所欲的赋值给一个char类型。需要注意的是,Rust中我们要用`'`来表示一个char,如果用`"`的话你得到的实际上是一个`&'static str`
1919

20-
```
20+
```rust
2121
let c = 'x';
2222
let cc = '王';
2323
```
@@ -36,9 +36,9 @@ let cc = '王';
3636

3737
有人说了,你看我整个`i128`行不。
3838

39-
答,不行,谁家电脑是128位的啊………
39+
答,不行,谁家电脑是128位的啊………
4040

41-
但是真的有人提议支持这个类型: https://github.com/rust-lang/rfcs/pull/1504
41+
但是真的有人提议支持这个类型: https://github.com/rust-lang/rfcs/pull/1504
4242

4343
### 自适应类型
4444

@@ -50,15 +50,15 @@ let cc = '王';
5050

5151
Rust的数组是被表示为`[T;N]`。其中N表示数组大小,并且这个大小一定是个编译时就能获得的整数值,T表示`泛型`类型,即任意类型。我们可以这么来声明和使用一个数组:
5252

53-
```
53+
```rust
5454
let a = [8, 9, 10];
55-
let b: [u8;3] = [8, 6, 5];
55+
let b: [u8;3] = [8, 6, 5];
5656
print!("{}", a[0]);
5757
```
5858

5959
和Golang一样,Rust的数组中的`N`(大小)也是类型的一部分,即`[u8; 3] != [u8; 4]`。这么设计是为了更安全和高效的使用内存,当然了,这会给第一次接触类似概念的人带来一点点困难,比如以下代码。
6060

61-
```
61+
```rust
6262
fn show(arr: [u8;3]) {
6363
for i in &arr {
6464
print!("{} ", i);
@@ -98,7 +98,7 @@ error: aborting due to previous error
9898
这里`&`符号是一个难点,我们不妨放开这个符号,简单的把它看成是`Slice`的甲鱼臀部——规定。另外,同样的,`Slice`也是可以通过下标的方式访问其元素,下标也是从0开始的哟。
9999
你可以这么声明并使用一个`Slice`
100100

101-
```
101+
```rust
102102
let arr = [1, 2, 3, 4, 5, 6];
103103
let slice_complete = &arr[..]; // 获取全部元素
104104
let slice_middle = &arr[1..4]; // 获取中间元素,最后取得的Slice为 [2, 3, 4] 。切片遵循左闭右开原则。
@@ -109,7 +109,7 @@ let slice_left = &arr[..3]; // 最后获得的元素为[1, 2, 3],长度为3。
109109
怎么样,了解了吧。
110110
那么接下来我们用`Slice`来改造一下上面的函数
111111

112-
```
112+
```rust
113113
fn show(arr: &[u8]) {
114114
for i in arr {
115115
print!("{} ", i);
@@ -141,7 +141,7 @@ fn main() {
141141

142142
下面介绍几种典型的`Vec`的用法:
143143

144-
```
144+
```rust
145145
let mut v1: Vec<i32> = vec![1, 2, 3]; // 通过vec!宏来声明
146146
let v2 = vec![0; 10]; // 声明一个初始长度为10的值全为0的动态数组
147147
println!("{}", v1[0]); // 通过下标来访问数组元素
@@ -175,11 +175,10 @@ for i in &mut v1 {
175175

176176
下面是一个小例子
177177

178-
```
178+
```rust
179179
fn foo(x: i32) -> i32 { x+1 }
180180

181181
let x: fn(i32) -> i32 = foo;
182182

183183
assert_eq!(11, x(10));
184-
185184
```

0 commit comments

Comments
 (0)