Skip to content

Commit

Permalink
Merge pull request rustcc#100 from daogangtang/master
Browse files Browse the repository at this point in the history
添加了每章的导言。
  • Loading branch information
miketang84 committed Mar 30, 2016
2 parents 393d4d5 + 970acd1 commit 8d04091
Show file tree
Hide file tree
Showing 13 changed files with 83 additions and 44 deletions.
3 changes: 3 additions & 0 deletions 03-editors/03-00-preface.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# 编辑器

本章描述几种常用编辑器针对 Rust 开发环境的配置。
7 changes: 7 additions & 0 deletions 06-flow/06-00-preface.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# 基本程序结构

Rust 是多泛型语言,当然支持命令式编程风格。本章讲解 Rust 中的几中基本程序结构。

把注释放在这一章,是因为注释在 Rust 中也是非常重要的一环,可以作为程序的基本结构之一。


3 changes: 3 additions & 0 deletions 07-type/07-00-preface.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# 类型、运算符和字符串

本章讲解 Rust 中的类型相关基础知识、运算符相关知识、和字符串的基本知识。
16 changes: 16 additions & 0 deletions 16-modules/16-00-preface.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# 模块和包系统、Prelude

## 前言

随着工程的增大,把所有代码写在一个文件里面,是一件极其初等及愚蠢的作法。大体来讲,它有如下几个缺点:

1. 文件大了,编辑器打开慢;
2. 所有代码放在同一个文件中,无法很好地利用现代多窗口编辑器,同时查看编辑相关联的两个代码片断;
3. 代码数量过多,查找某一个关键词过慢,定位到某一行代码的效率会大大降低;
4. 会大大增加上翻下翻的频率,导致你的鼠标中间滚轮易坏;
5. 不断地上翻下翻,会导致你头晕;
6. 头晕了,就容易写出错误的代码,甚至改错文件中的某一行(相似的地方,改错地方了);
7. 出现bug,根据错误反馈,知道是哪一片逻辑的问题,但不容易快速定位;
8. 文件越大,上述7个问题越突出,恶性循环。

因此,模块是几乎所有语言的基础设施,尽管叫法各有不同。
44 changes: 14 additions & 30 deletions 16-modules/16-01-module.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,5 @@

# 模块和包

## 前言

随着工程的增大,把所有代码写在一个文件里面,是一件极其初等及愚蠢的作法。大体来讲,它有如下几个缺点:

1. 文件大了,编辑器打开慢;
2. 所有代码放在同一个文件中,无法很好地利用现代多窗口编辑器,同时查看编辑相关联的两个代码片断;
3. 代码数量过多,查找某一个关键词过慢,定位到某一行代码的效率会大大降低;
4. 会大大增加上翻下翻的频率,导致你的鼠标中间滚轮易坏;
5. 不断地上翻下翻,会导致你头晕;
6. 头晕了,就容易写出错误的代码,甚至改错文件中的某一行(相似的地方,改错地方了);
7. 出现bug,根据错误反馈,知道是哪一片逻辑的问题,但不容易快速定位;
8. 文件越大,上述7个问题越突出,恶性循环。

因此,模块是几乎所有语言的基础设施,尽管叫法各有不同。

# 包和模块

## 包(crate)

Expand Down Expand Up @@ -58,7 +42,7 @@ Rust 提供了一个关键字 `mod`,它可以在一个文件中定义一个模
```
mod aaa {
const X: i32 = 10;
fn print_aaa() {
println!("{}", 42);
}
Expand All @@ -69,11 +53,11 @@ mod aaa {
```
mod aaa {
const X: i32 = 10;
fn print_aaa() {
println!("{}", 42);
}
mod BBB {
fn print_bbb() {
println!("{}", 37);
Expand All @@ -86,11 +70,11 @@ mod aaa {
```
mod aaa {
const X: i32 = 10;
fn print_aaa() {
println!("{}", 42);
}
mod bbb {
fn print_bbb() {
println!("{}", 37);
Expand All @@ -102,7 +86,7 @@ mod ccc {
fn print_ccc() {
println!("{}", 25);
}
}
```
Expand All @@ -122,9 +106,9 @@ mod ccc {
fn main() {
use ccc::print_ccc;
print_ccc();
// 或者
// 或者
ccc::print_ccc();
}
```
Expand Down Expand Up @@ -155,7 +139,7 @@ pub fn print_aaa() {
`main.rs` 中,写上:

```
mod aaa;
mod aaa;
use aaa::print_aaa;
Expand Down Expand Up @@ -221,7 +205,7 @@ mod a;
use a::b::c::d;
fn main() {
d::print_ddd();
d::print_ddd();
}
```
Expand Down Expand Up @@ -256,7 +240,7 @@ use super::xxx;
另外,还有一种特殊的路径形式:
```
::xxx::yyy
```
```
它表示,引用根路径下的 `xxx::yyy`,这个根路径,指的是当前 crate 的根路径。

路径中的 `*` 符号:
Expand All @@ -279,7 +263,7 @@ pub use b::c::d;

### 加载外部 crate

前面我们讲的,都是在当前 crate 中的技术。真正我们在开发时,会大量用到外部库。外部库是通过
前面我们讲的,都是在当前 crate 中的技术。真正我们在开发时,会大量用到外部库。外部库是通过

```
extern crate xxx;
Expand All @@ -293,7 +277,7 @@ extern crate xxx;
extern crate xxx;
use xxx::yyy::zzz;
```
```

引入的时候,可以通过 `as` 关键字重命名。

Expand Down
4 changes: 4 additions & 0 deletions 20-rcarc/20-00-preface.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# 几种智能指针

本章讲解 `Rc`, `Arc`, `Mutex`, `RwLock`, `Cell`, `RefCell` 的知识和使用方法。

5 changes: 5 additions & 0 deletions 21-intoborrow/21-00-preface.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# 类型系统中的几个常见 trait

本章讲解 Rust 类型系统中的几个常见 trait。有 `Into, From, AsRef, AsMut, Borrow, BorrowMut, ToOwned, Deref, Cow`


4 changes: 4 additions & 0 deletions 23-concurrency-parallel-threads/23-00-preface.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# 并发,并行,多线程编程

本章讲解 Rust 中,并发,并行,多线程编程的相关知识。

3 changes: 3 additions & 0 deletions 24-unsafety-rawpointer/24-00-preface.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Unsafe、原始指针

本章开始讲解 Rust 中的 `Unsafe` 部分。
3 changes: 3 additions & 0 deletions 29-testing/29-00-preface.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# 测试与评测

本章讲解 Rust 中内建的测试与评测相关知识。
3 changes: 3 additions & 0 deletions 33-data-struct/33-00-preface.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# 常用数据结构实现

本章讲解如何使用 Rust 进行一些常用数据结构的实现。实现的代码仅作示例用,并不一定十分高效。真正使用的时候,请使用标准库或第三方成熟库中的数据结构。
7 changes: 7 additions & 0 deletions 35-action/35-00-preface.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# 实战篇

本章举 3 个实际中的例子,来小小展示一下 Rust 在实际中的应用。它们分别是:

- Json处理
- Web 应用开发入门
- 使用Postgresql数据库
25 changes: 11 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,27 +31,24 @@ The Rust primer for beginners.
1. [Linux](./02-install/02-01-install_rust_on_linux.md)
2. [Mac](./02-install/02-02-install_rust_on_mac_os.md)
3. [Windows](./02-install/02-03-install_rust_on_windows.md)
3. 编辑器
3. [编辑器](./03-editors/03-00-preface.md)
1. [前期准备](./03-editors/03-01-before.md)「wayslog 160105」
1. [vim](./03-editors/03-02-vim.md)「wayslog 160105」
2. [emacs](./03-editors/03-03-emacs.md)「tiansiyuan 160120」
3. [vscode](./03-editors/03-04-emacs.md)「daogangtang 160105」
4. [atom](./03-editors/03-05-atom.md)「wayslog 160105」
5. sublime
6. [visual studio](./03-editors/03-07-visualstudio.md)「marvinguo 」
7. eclipse
8. Intellij IDEA
9. [spacemacs](./03-editors/03-10-spacemacs.md)「wayslog 160105」
4. [Rust一小时快速入门](./04-quickstart/04-00-intro.md)「ee0703 160120」
1. [第一个Rust程序](./04-quickstart/04-01-hello-world.md)
2. [简单的数学运算](./04-quickstart/04-02-basic-math.md)
3. [快速上手](./04-quickstart/04-03-cheet-sheet.md)
5. [Cargo项目管理器、crate](./05-cargo-projects-manager/05-cargo-projects-manager.md)「fuyingfuying 160131」
6. 基本程序结构「daogangtang 160131」
6. [基本程序结构](./06-flow/06-00-preface.md)「daogangtang 160131」
1. [注释](./06-flow/06-01-comment.md)
2. [条件](./06-flow/06-02-condition.md)
3. [循环](./06-flow/06-03-repeatition.md)
7. 类型、运算符和字符串「wayslog 160125」
7. [类型、运算符和字符串](07-type/07-00-preface.md)「wayslog 160125」
1. [基础类型](07-type/07-01-types.md)
2. [复合类型](07-type/07-02-compound-types.md)
2. [字符串类](07-type/07-03-strings.md)
Expand Down Expand Up @@ -81,30 +78,30 @@ The Rust primer for beginners.
2. [哈希表](14-collections/14-02-hashmap.md)
15. [迭代器](15-iterator/15-00-overview.md)「wayslog」
1. [迭代器、适配器、消费者](15-iterator/15-01-iterator.md)
16. 模块和包系统、Prelude「daogangtang」
16. [模块和包系统、Prelude](16-modules/16-00-preface.md)「daogangtang」
1. [模块(module)和包(crate)](16-modules/16-01-module.md)
2. [Prelude](16-modules/16-02-prelude.md)
17. [Option、Result与错误处理](17-error-handling/17-01-option-result.md)「JohnSmithX 160130」
18. [宏系统](18-macro/18-01-macro.md)「tennix 160222」
19. [堆、栈与Box](./19-heap-stack/heap-stack.md)「tennix 160222」
20. Rc, Arc, Mutex, RwLock, Cell, RefCell「daogangtang 160120」
20. [几种智能指针](./20-rcarc/20-00-preface.md)「daogangtang 160120」
1. [Rc, Arc](./20-rcarc/20-01-rcarc.md)
2. [Mutex, RwLock](./20-rcarc/20-02-mutex.md)
3. [Cell, RefCell](./20-rcarc/20-03-cell.md)
21. 类型系统相关的Trait 「daogangtang 160130」
21. [类型系统中的几个常见 Trait](./21-intoborrow/21-00-preface.md) 「daogangtang 160130」
1. [Into/From 及其在 String 和 &str 互转上的应用](./21-intoborrow/21-01-into.md)
2. [AsRef, AsMut](./21-intoborrow/21-02-asref.md)
3. [Borrow, BorrowMut, ToOwned](./21-intoborrow/21-03-borrow.md)
4. [Deref 与 Deref coercions](./21-intoborrow/21-04-deref.md)
5. [Cow 及其在 String 和 &str 上的应用](./21-intoborrow/21-05-cow.md)
22. [Send 和 Sync](./22-marker/21-01-sendsync.md)「daogangtang」
23. 并发,并行,多线程编程「anzhihun 160120」
23. [并发,并行,多线程编程](./23-concurrency-parallel-threads/23-00-preface.md)「anzhihun 160120」
1. [线程](./23-concurrency-parallel-threads/24-01-thread.md)
2. [消息传递](./23-concurrency-parallel-threads/24-02-message-passing.md)
3. [共享内存](./23-concurrency-parallel-threads/24-03-share-memory.md)
4. [同步](./23-concurrency-parallel-threads/24-04-synchronize.md)
5. [并行](./23-concurrency-parallel-threads/24-05-parallel.md)
24. Unsafe、原始指针「JohnSmithX 160130」
24. [Unsafe、原始指针](24-unsafety-rawpointer/24-00-preface.md)「JohnSmithX 160130」
1. [Unsafe](24-unsafety-rawpointer/24-01-unsafety.md)
2. [原始指针](24-unsafety-rawpointer/24-02-raw-pointer.md)
25. FFI「42 160222」
Expand All @@ -113,13 +110,13 @@ The Rust primer for beginners.
1. [属性](27-attr-and-compiler-args/27-01-attributes.md)
2. [编译器参数](27-attr-and-compiler-args/27-02-rustc-options.md)
28. [Cargo参数配置](28-cargo-detailed-cfg/28-01-cargo-detailed-cfg.md)「fuyingfuying 160131」
29. 测试与评测「daogangtang 160222」
29. [测试与评测](29-testing/29-00-preface.md)「daogangtang 160222」
1. [测试 (testing)](29-testing/29-01-threearchtest.md)
2. 评测 (benchmark)
30. [代码风格](30-coding-style/30-01-style.md)「tiansiyuan」
31. [Any与反射](31-any/31-01-any.md)「wayslog」
32. [安全(safety)](32-safety/32-01-safety.md)「daogangtang」
33. 常用数据结构实现「Naupio」
33. [常用数据结构实现](33-data-struct/33-00-preface.md)「Naupio」
1. [栈结构](33-data-struct/33-01-stack.md)
2. [队列](33-data-struct/33-02-queue.md)
3. [优先队列](33-data-struct/33-03-priority_queue.md)
Expand All @@ -130,7 +127,7 @@ The Rust primer for beginners.
1. [系统命令:调用grep](34-std/34-01-process.md)
2. [目录操作:简单grep](34-std/34-02-fs-and-path.md)
3. [网络模块:W回音](34-std/34-03-net.md)
35. 实战篇「wangyu190810 已完成」
35. [实战篇](35-action/json_data/readme.md)「wangyu190810 已完成」
1. [实战:Json处理](35-action/json_data/readme.md)
2. [实战:Web 应用开发入门](35-action/mysite/readme.md)
3. [实战:使用Postgresql数据库](35-action/db/readme.md)

0 comments on commit 8d04091

Please sign in to comment.