深入浅出Rust
作者:范长春
出版社:机械工业出版社
出版时间:2018-09-01
ISBN:9787111606420
定价:¥89.00
前言
第一部分 基础知识
第1章 与君初相见 2
1.1 版本和发布策略 2
1.2 安装开发环境 4
1.3 Hello World 7
1.4 Prelude 8
1.5 Format格式详细说明 8
第2章 变量和类型 10
2.1 变量声明 10
2.1.1 变量遮蔽 12
2.1.2 类型推导 13
2.1.3 类型别名 14
2.1.4 静态变量 15
2.1.5 常量 16
2.2 基本数据类型 16
2.2.1 bool 16
2.2.2 char 17
2.2.3 整数类型 17
2.2.4 整数溢出 19
2.2.5 浮点类型 21
2.2.6 指针类型 23
2.2.7 类型转换 23
2.3 复合数据类型 24
2.3.1 tuple 25
2.3.2 struct 25
2.3.3 tuple struct 27
2.3.4 enum 29
2.3.5 类型递归定义 32
第3章 语句和表达式 34
3.1 语句 34
3.2 表达式 34
3.2.1 运算表达式 35
3.2.2 赋值表达式 37
3.2.3 语句块表达式 38
3.3 if-else 39
3.3.1 loop 40
3.3.2 while 41
3.3.3 for循环 42
第4章 函数 44
4.1 简介 44
4.2 发散函数 46
4.3 main函数 47
4.4 const fn 48
4.5 函数递归调用 49
第5章 trait 50
5.1 成员方法 50
5.2 静态方法 53
5.3 扩展方法 55
5.4 完整函数调用语法 56
5.5 trait约束和继承 58
5.6 Derive 59
5.7 trait别名 60
5.8 标准库中常见的trait简介 61
5.8.1 Display和Debug 61
5.8.2 PartialOrd / Ord /
PartialEq / Eq 62
5.8.3 Sized 63
5.8.4 Default 64
5.9 总结 65
第6章 数组和字符串 66
6.1 数组 66
6.1.1 内置方法 67
6.1.2 多维数组 67
6.1.3 数组切片 67
6.1.4 DST和胖指针 68
6.1.5 Range 70
6.1.6 边界检查 72
6.2 字符串 74
6.2.1 &str 74
6.2.2 String 75
第7章 模式解构 77
7.1 简介 77
7.2 match 78
7.2.1 exhaustive 79
7.2.2 下划线 80
7.2.3 match也是表达式 82
7.2.4 Guards 83
7.2.5 变量绑定 84
7.2.6 ref和mut 85
7.3 if-let和while-let 88
7.4 函数和闭包参数做模式解构 89
7.5 总结 90
第8章 深入类型系统 91
8.1 代数类型系统 91
8.2 Never Type 94
8.3 再谈Option类型 97
第9章 宏 102
9.1 简介macro 102
9.1.1 实现编译阶段检查 102
9.1.2 实现编译期计算 103
9.1.3 实现自动代码生成 103
9.1.4 实现语法扩展 103
9.2 示范型宏 103
9.3 宏1.1 105
第二部分 内存安全
第10章 内存管理基础 110
10.1 堆和栈 110
10.2 段错误 111
10.3 内存安全 112
第11章 所有权和移动语义 114
11.1 什么是所有权 114
11.2 移动语义 116
11.3 复制语义 118
11.4 Box类型 120
11.5 Clone VS. Copy 121
11.5.1 Copy的含义 121
11.5.2 Copy 的实现条件 121
11.5.3 Clone的含义 122
11.5.4 自动derive 123
11.5.5 总结 123
11.6 析构函数 124
11.6.1 资源管理 125
11.6.2 主动析构 126
11.6.3 Drop VS. Copy 129
11.6.4 析构标记 129
第12章 借用和生命周期 132
12.1 生命周期 132
12.2 借用 132
12.3 借用规则 134
12.4 生命周期标记 136
12.4.1 函数的生命周期标记 136
12.4.2 类型的生命周期标记 138
12.5 省略生命周期标记 139
第13章 借用检查 141
13.1 编译错误示例 142
13.2 内存不安全示例:修改枚举 143
13.3 内存不安全示例:迭代器
失效 144
13.4 内存不安全示例:悬空指针 146
13.5 小结 148
第14章 NLL(Non-Lexical-
Lifetime) 150
14.1 NLL希望解决的问题 150
14.2 NLL的原理 154
14.3 小结 157
第15章 内部可变性 158
15.1 Cell 158
15.2 RefCell 161
15.3 UnsafeCell 164
第16章 解引用 169
16.1 自定义解引用 169
16.2 自动解引用 171
16.3 自动解引用的用处 171
16.4 有时候需要手动处理 173
16.5 智能指针 175
16.5.1 引用计数 175
16.5.2 Cow 178
16.6 小结 180
第17章 泄漏 181
17.1 内存泄漏 181
17.2 内存泄漏属于内存安全 184
17.3 析构函数泄漏 185
第18章 Panic 190
18.1 什么是panic 190
18.2 Panic实现机制 191
18.3 Panic Safety 192
18.4 小结 197
第19章 Unsafe 198
19.1 unsafe关键字 198
19.2 裸指针 199
19.3 内置函数 201
19.3.1 transmute 201
19.3.2 内存读写 202
19.3.3 综合示例 204
19.4 分割借用 206
19.5 协变 209
19.5.1 什么是协变 209
19.5.2 PhantomData 211
19.6 未定义行为 214
19.7 小结 215
第20章 Vec源码分析 216
20.1 内存申请 217
20.2 内存扩容 220
20.3 内存释放 222
20.3.1 Vec的析构函数 222
20.3.2 Drop Check 223
20.4 不安全的边界 226
20.5 自定义解引用 227
20.6 迭代器 228
20.7 panic safety 231
第三部分 高级抽象
第21章 泛型 234
21.1 数据结构中的泛型
......