Skip to content

Commit 870291f

Browse files
author
wayslog
committed
bug fixed for the disscusion of gitbook
1 parent 21197b1 commit 870291f

15 files changed

+65
-64
lines changed

SUMMARY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@
100100
* [评测 (benchmark)](testing/bench.md)
101101
* [代码风格](coding-style/style.md)「tiansiyuan」
102102
* [Any与反射](any/any.md)「wayslog」
103-
* [安全(safe)](safe/safety.md)「daogangtang」
103+
* [安全](safe/safety.md)「daogangtang」
104104
* [常用数据结构实现](data-structure/preface.md)「Naupio」
105105
* [栈结构](data-structure/stack.md)
106106
* [队列](data-structure/queue.md)

action/db/readme.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
# rust数据库操作
22

3-
编程时,我们依赖数据库来存储相应的数据,很多编程语言都支持对数据库的操作(为什么不是全部,因为还有html这样的东西),所以当然
4-
可以使用rust操作数据库。
3+
编程时,我们依赖数据库来存储相应的数据,很多编程语言都支持对数据库的操作,所以当然可以使用Rust操作数据库。
54

6-
不过在我自己操作时,发现很多问题,主要因为我不了解rust在操作数据库时,应该注意的事情,从而浪费了很多的时间,在进行数据查询时。
5+
不过在我自己操作时,发现很多问题,主要因为我不了解Rust在操作数据库时,应该注意的事情,从而浪费了很多的时间,在进行数据查询时。
76
具体遇到的坑,我会做一些演示,从而让大家避免这些情况。
87

9-
首先使用rust操作postgresql,因为postgresql是我最喜欢的数据库
8+
首先使用Rust操作PostgreSQL,因为PostgreSQL是我最喜欢的数据库
109

1110
首先创建新项目 `cargo new db --bin`
1211

13-
在cargo.toml中添加,postgres:
12+
在cargo.toml中添加 `postgres` 如下:
13+
1414

1515
``` rust
1616
[package]
@@ -185,7 +185,7 @@ fn main() {
185185
自己遇到的坑
186186

187187
- 创建连接函数时,连接必须有一个返回值,所以必须指定返回值的类型,
188-
对于一个写python的人而言,我觉得是痛苦的,我想按照官方的写法match
188+
对于一个写Python的人而言,我觉得是痛苦的,我想按照官方的写法match
189189
一下,发现可能产生多个返回值。在编译时直接无法通过编译,所以最终
190190
使用了unwrap,解决问题,不过我还是没有学会,函数多值返回时我如何
191191
定义返回值
@@ -224,8 +224,8 @@ Could not compile `db`.
224224

225225
然后去查看了关于postgres模块的所有函数,尝试了无数种办法,依旧没有解决。
226226

227-
可能自己眼高手低,如果从头再把rust的相关教程看一下,可能很早就发现这个问题,
228-
也有可能是因为习惯了写python,导致自己使用固有的思维来看待问题和钻牛角尖,才
227+
可能自己眼高手低,如果从头再把Rust的相关教程看一下,可能很早就发现这个问题,
228+
也有可能是因为习惯了写Python,导致自己使用固有的思维来看待问题和钻牛角尖,才
229229
导致出现这样的问题,浪费很多的时间。
230230

231231
- 改变思维,把自己当作一个全新的新手,既要利用已有的思想来学习新的语言,同样不要

action/json_data/readme.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
# rust json处理
1+
# Rust json处理
22

3-
json是一种比较重要的格式,尤其是现在的web开发领域,json相比于传统的xml更加容易操作和减小传输
3+
JSON是一种比较重要的格式,尤其是现在的web开发领域,JSON相比于传统的XML更加容易操作和减小传输
44

5-
rust中的json处理依赖 cargo 中的rustc-serialize模块
5+
Rust中的JSON处理依赖 cargo 中的rustc-serialize模块
66

7-
###先简单的创建一个rust项目工程
7+
###先简单的创建一个Rust项目工程
88

99
``` rust
1010
$ cargo new json_data --bin
@@ -64,7 +64,7 @@ $ cargo build
6464
*注意一个问题由于国内网络访问github不稳定,这些第三方库很多托管在github上,所以可能需要修改你的
6565
网络访问*
6666
67-
1. 在安装rust之后,会在你的用户目录之下生成一个`.cargo`文件夹,进入这个文件夹
67+
1. 在安装Rust之后,会在你的用户目录之下生成一个`.cargo`文件夹,进入这个文件夹
6868
2. 在`.cargo`文件夹下,创建一个`config`文件,在文件中填写中科大软件源,可能以后会出现其他的源,先用这个
6969
3. `config`文件内容如下
7070

ffi/compiling-rust-to-lib.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 将rust编译成库
1+
# 将Rust编译成库
22
上一章讲述了如何从rust中调用c库,这一章我们讲如何把rust编译成库让别的语言通过cffi调用。
33

44
## 调用约定和mangle

iterator/iterator.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ let m = (1..20).fold(1u64, |mul, x| mul*x);
128128

129129
### 适配器
130130

131-
我们所熟知的生产消费的模型里,生产者所生产的东西不一定都会被消费者买账,因此,需要对原有的产品进行再组装。这个再组装的过程,就是适配器。因为适配器返回的是一个新的迭代器,可以直接用链式请求一直写下去,而不至于陷入到某前端语言的回调地狱之中
131+
我们所熟知的生产消费的模型里,生产者所生产的东西不一定都会被消费者买账,因此,需要对原有的产品进行再组装。这个再组装的过程,就是适配器。因为适配器返回的是一个新的迭代器,所以可以直接用链式请求一直写下去
132132

133133
前面提到了 Reduce 函数,那么自然不得不提一下另一个配套函数 —— `map` :
134134

@@ -149,7 +149,7 @@ warning: unused result which must be used: iterator adaptors are lazy and
149149

150150
呀,这是啥?
151151

152-
因为,所有的适配器,都是惰性求值的!都是惰性求值的!都是惰性求值的!
152+
因为,所有的适配器,都是惰性求值的!
153153

154154
**也就是说,除非你调用一个消费者,不然,你的操作,永远也不会被调用到!**
155155

module/module.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ use super::xxx;
263263

264264
路径中的 `*` 符号:
265265
```rust
266-
use xxx:*
266+
use xxx::*;
267267
```
268268
表示导入 `xxx` 模块下的所有可见 item(加了 pub 标识的 item)。
269269

ownership-system/lifetime.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ fn main() {
1818

1919
> error: unresolved name `x`.
2020
21-
错误的意思是“无法解析 `a` 标识符”,也就是找不到 `x` , 这是因为像很多编程语言一样,Rust中也存在作用域概念,当资源离开离开作用域后,资源的内存就会被释放回收,当借用/引用离开作用域后也会被销毁,所以 `x` 在离开自己的作用域后,无法在作用域之外访问。
21+
错误的意思是“无法解析 `x` 标识符”,也就是找不到 `x` , 这是因为像很多编程语言一样,Rust中也存在作用域概念,当资源离开离开作用域后,资源的内存就会被释放回收,当借用/引用离开作用域后也会被销毁,所以 `x` 在离开自己的作用域后,无法在作用域之外访问。
2222

2323

2424
上面的涉及到几个概念:

ownership-system/ownership.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,9 @@ c.rs:4 println!("{}", a);
8282
在Rust中,和“绑定”概念相辅相成的另一个机制就是“转移move所有权”,意思是,**可以把资源的所有权(ownership)从一个绑定转移(move)成另一个绑定**,这个操作同样通过`let`关键字完成,和绑定不同的是,`=`两边的左值和右值均为两个标识符:
8383
```rust
8484
语法:
85-
let 标识符A = 标识符B; // 把“A”绑定资源的所有权转移给“B
85+
let 标识符A = 标识符B; // 把“B”绑定资源的所有权转移给“A
8686
```
87-
Move前后的内存示意如下
87+
move前后的内存示意如下
8888
> **Before move:**
8989
a <=> 内存(地址:**A**,内容:"xyz")
9090
**After move:**

quickstart/control-flow.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,7 @@ match pair {
118118
}
119119
```
120120

121-
`match`的这种解构同样适用于结构体或者枚举。如果有必要,
122-
还可以使用`..`来忽略域或者数据:
121+
`match`的这种解构同样适用于结构体或者枚举。如果有必要,还可以使用`..`来忽略域或者数据:
123122

124123
```rust
125124
struct Point {
@@ -141,6 +140,7 @@ enum OptionalInt {
141140
let x = OptionalInt::Value(5);
142141

143142
match x {
143+
// 这里是 match 的 if guard 表达式,我们将在以后的章节进行详细介绍
144144
OptionalInt::Value(i) if i > 5 => println!("Got an int bigger than five!"),
145145
OptionalInt::Value(..) => println!("Got an int!"),
146146
OptionalInt::Missing => println!("No such luck."),

quickstart/rust-travel.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ fn main() {
6565
> [package]
6666
name = "hellorust"
6767
version = "0.1."
68-
authors = ["YourName <YourEmail>"]
69-
> [dependencies]
68+
authors = ["YourName <YourEmail>"]
69+
[dependencies]
7070

7171
- 编辑src目录下的main.rs文件
7272

quickstart/struct-enum.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ struct Point {
1515
x: i32,
1616
y: i32,
1717
}
18-
let mut point = Point { x: 0, y: 0 };
18+
let point = Point { x: 0, y: 0 };
1919

2020
// tuple structs
2121
struct Color(u8, u8, u8);

testing/bench.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
# 性能评测
1+
# 性能测试
22

3-
测试,是验证程序的正确性,这是第一步。程序能正常运行后,往往需要测试程序(一部分)的执行速度,这时,就需要用到性能评测
4-
通常来讲,所谓性能评测,指的是测量程序运行的速度,即运行一次要多少时间(通常是执行多次求平均值)。Rust 竟然连这个特性都集成在语言基础特性中,真的是一门很重视工程性的语言。
3+
测试,是验证程序的正确性,这是第一步。程序能正常运行后,往往需要测试程序(一部分)的执行速度,这时,就需要用到性能测试
4+
通常来讲,所谓性能测试,指的是测量程序运行的速度,即运行一次要多少时间(通常是执行多次求平均值)。Rust 竟然连这个特性都集成在语言基础特性中,真的是一门很重视工程性的语言。
55

66
下面直接说明如何使用。
77

@@ -63,11 +63,11 @@ test tests::bench_add_two ... bench: 1 ns/iter (+/- 0)
6363
test result: ok. 0 passed; 0 failed; 1 ignored; 1 measured
6464
```
6565

66-
可以看到,Rust 的性能评测是以纳秒 ns 为单位。
66+
可以看到,Rust 的性能测试是以纳秒 ns 为单位。
6767

6868
写测评代码的时候,需要注意以下一些点:
6969

70-
1. 只把你需要做性能评测的代码(函数)放在评测函数中;
70+
1. 只把你需要做性能测试的代码(函数)放在评测函数中;
7171
2. 对于参与做性能测试的代码(函数),要求每次测试做同样的事情,不要做累积和改变外部状态的操作;
7272
3. 参数性能测试的代码(函数),执行时间不要太长。太长的话,最好分成几个部分测试。这也方便找出性能瓶颈所在地方。
7373

0 commit comments

Comments
 (0)