欢迎来到相识电子书!
深入浅出Rust

深入浅出Rust

作者:范长春

分类:科技

ISBN:9787111606420

出版时间:2018-8-21

出版社:机械工业出版社

标签: 编程 

章节目录

前言
第一部分 基础知识
第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 数据结构中的泛型 234
21.2 函数中的泛型 235
21.3 impl块中的泛型 237
21.4 泛型参数约束 237
21.5 关联类型 241
21.6 何时使用关联类型 244
21.7 泛型特化 246
21.7.1 特化的意义 247
21.7.2 default上下文关键字 248
21.7.3 交叉 impl 250
第22章 闭包 252
22.1 变量捕获 254
22.2 move关键字 256
22.3 Fn/FnMut/FnOnce 257
22.4 闭包与泛型 259
22.5 闭包与生命周期 261
第23章 动态分派和静态分派 264
23.1 trait object 265
23.2 object safe 268
23.3 impl trait 271
第24章 容器与迭代器 275
24.1 容器 275
24.1.1 Vec 275
24.1.2 VecDeque 277
24.1.3 HashMap 277
24.1.4 BTreeMap 281
24.2 迭代器 283
24.2.1 实现迭代器 283
24.2.2 迭代器的组合 284
24.2.3 for循环 285
第25章 生成器 289
25.1 简介 289
25.2 对比迭代器 291
25.3 对比立即求值 292
25.4 生成器的原理 293
25.4.1 生成器原理简介 293
25.4.2 自引用类型 297
25.5 协程简介 298
第26章 标准库简介 302
26.1 类型转换 302
26.1.1 AsRef / AsMut 302
26.1.2 Borrow / BorrowMut 303
26.1.3 From / Into 304
26.1.4 ToOwned 305
26.1.5 ToString / FromStr 305
26.2 运算符重载 306
26.3 I/O 308
26.3.1 平台相关字符串 308
26.3.2 文件和路径 309
26.3.3 标准输入输出 310
26.3.4 进程启动参数 311
26.4 Any 311
第四部分 线程安全
第27章 线程安全 314
27.1 什么是线程 314
27.2 启动线程 316
27.3 免数据竞争 317
27.4 Send & Sync 320
第28章 详解Send和Sync 321
28.1 什么是Send 321
28.2 什么是Sync 322
28.3 自动推理 323
28.4 小结 324
第29章 状态共享 325
29.1 Arc 325
29.2 Mutex 326
29.3 RwLock 328
29.4 Atomic 329
29.5 死锁 331
29.6 Barrier 333
29.7 Condvar 334
29.8 全局变量 335
29.9 线程局部存储 336
29.10 总结 337
第30章 管道 339
30.1 异步管道 339
30.2 同步管道 341
第31章 第三方并行开发库 343
31.1 threadpool 343
31.2 scoped-threadpool 344
31.3 parking_lot 345
31.4 crossbeam 345
31.5 rayon 346
第五部分 实用设施
第32章 项目和模块 350
32.1 cargo 350
32.2 项目依赖 353
32.2.1 配置 355
32.2.2 workspace 355
32.2.3 build.rs 356
32.3 模块管理 358
32.3.1 文件组织 358
32.3.2 可见性 360
32.3.3 use关键字 362
第33章 错误处理 364
33.1 基本错误处理 364
33.2 组合错误类型 366
33.3 问号运算符 367
33.4 main函数中使用问号运算符 372
33.5 新的Failure库 373
第34章 FFI 375
34.1 什么是FFI 375
34.2 从C调用Rust库 376
34.3 从Rust调用C库 378
34.4 更复杂的数据类型 378
第35章 文档和测试 381
35.1 文档 381
35.2 测试 382
附录 词汇表 387

内容简介

本书详细描述了Rust语言的基本语法,穿插讲解一部分高级使用技巧,并以更容易理解的方式解释其背后的设计思想。全书总共分五个部分。

第一部分介绍Rust基本语法,因为对任何程序设计语言来说,语法都是基础,学习这部分是理解其他部分的前提。

第二部分介绍属于Rust独一无二的内存管理方式。它设计了一组全新的机制,既保证了安全性,又保持了强大的内存布局控制力,而且没有额外性能损失。这部分是本书的重点和核心所在,也是Rust语言的思想内核精髓之处。

第三部分介绍Rust的抽象表达能力。它支持多种编程范式,以及较为强大的抽象表达能力。

第四部分介绍并发模型。在目前这个阶段,对并行编程的支持是新一代编程语言不可绕过的重要话题。Rust也吸收了业界最新的发展成果,对并发有良好支持。

第五部分介绍一些实用设施。Rust语言有许多创新,但它绝不是高高在上孤芳自赏的类型,设计者在设计过程中充分考虑了语言的工程实用性。众多在其他语言中被证明过的优秀实践被吸收了进来,有利于提升实际工作效率。

通过此书,读者能够深入透彻地理解Rust的高阶特性,比如代数类型系统、生命周期、借用检查、内部可变性、线程安全、泛型、闭包、迭代器、生成器等。可作为参考书供学生、软件工程师、研究人员以及其他对Rust语言感兴趣的读者参考。本书所揭示的Rust编程语言的设计思想对于理解其他系统编程语言,如C++,也非常有帮助。

下载说明

1、深入浅出Rust是作者范长春创作的原创作品,下载链接均为网友上传的网盘链接!

2、相识电子书提供优质免费的txt、pdf等下载链接,所有电子书均为完整版!

下载链接

热门评论

  • smallfish的评论
    符合“浅出 Rust”标题,语法和语言知识点都提到了一些,适合入门
  • 贾里的评论
    20181012第一遍。这本书不算深,比较适合初学者,当然不是没有编程经验的初学者,而是那些被C/C++搞得头秃的码农童鞋们。Rust的定位是系统级编程,对于业务开发的童鞋帮助不大,你写业务还是用别的算了。 看得出来,Rust离成熟还远,优势在于比C/C++这样的语言历史包袱小,所以可以无所顾忌地演进,比如引入了很多近年来得到实践证明的新特性,又不至于写很多繁琐的代码。缺点在于还是太年轻,很多我期待的功能没有稳定下来成为标准库,比如协程。生命周期设计得很复杂,是最难理解的部分,感觉这个是未来最大的隐患之一。另外,Rust只是保证内存安全,像内存泄漏之类的问题还是没有办法很好地解决。 看的是kindle电子版,代码块的缩进有问题,其他没有什么大猫病。
  • Elder Ryan的评论
    突然大家全在写Rust
  • yetone的评论
    不错
  • greatabel的评论
    希望能用业内比较标准的做法讲解,而不是为讲解而讲解。如果要求不高的人可能觉得当文档用,但是同时在读programming rust,专业性和引导性上起码好一个数量级。
  • ggarlic的评论
    有那么一两部分比较敷衍,其他的不错
  • 阿丹的评论
    稍微虎头蛇尾
  • Jeffrey的评论
    三星半,针对没有C/C++基础的程序猿较好,但篇幅可以减少一半。。。
  • Tux的评论
    比较适合对C++比较熟悉的。Rust还是很强大的,但同时也很复杂,特别是Unsafe部分,需要花点功夫去理解。书如果写的再简洁一点、更有条理一点就更好了。
  • Adadada的评论
    2018 年总算有一本读完的书。。。 很好的 Rust 入门教程,阿德师兄做的校审
  • Jan的评论
    章节组织对非常适合有一定编程经验的程序员,对rust的设计理念和选择解释的很清楚,读起来酣畅淋漓。不仅仅写了rust的现状,也包含了社区中还在讨论的话题。非常好的书,学习Rust必读。
  • 思寇特牌搬砖工的评论
    后面两部分太敷衍了,第二部分是精华
  • 康康的评论
    Rust很强大,尤其是在安全性上面,但是也的确非常复杂,C++复杂在使用太灵活,Rust复杂在于编译器做了很多基于安全的约束,C++你不知道运行结果,Rust你不知道编译错误如何清理。
  • orcl_zhang的评论
    已经用了Rust快两年了,多数内容在Rust官方书和文档里都有,其余部分在RFC也有。现在Rust语言发展挺快的,紧跟社区论坛还有官方一些讨论,能读到不少东西。这本书,看的出来还是挺用心的,随便翻翻还是挺不错,有些内容也是在学Rust的时候被漏掉了。
  • 尘与尘的评论
    不太像初学者看的书,但是在中文资料里算是很好的了。
  • awaa的评论
    内容很详实,特别是介绍了从cpp出发的不同和大量语言特性的背景。比较容易理解
  • VitalyR的评论
    大量细致的语法特性讲解,对我这种看了the book不知道如何提高的人很有用。
  • 辻彩的评论
    真正的深入浅出
  • 稻谷的谷的评论
    正如书的介绍所说,本书不满足只介绍 Rust 而是试图讲清楚背后的设计原理和思想,在这一点作者可以说确实很努力,但是有些地方过于简略和跳跃,而且后半部分有些东西会重复,我猜是因为有些章节部分是作者在专栏发过的文章扩充而来,有些点因为博文长度的限制,在书中也没有相应拓展,导致出现了问题。
  • ypLiu的评论
    比另一本Rust中文书《Rust编程之道》好一点,对一些核心概念解释得也很好