Rust程序设计pdf下载pdf下载

Rust程序设计百度网盘pdf下载

作者:
简介:本篇主要提供Rust程序设计pdf下载
出版社:文轩网旗舰店
出版时间:2020-09
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

作  者:(美)吉姆·布兰迪,(美)贾森·奥伦多夫 著 李松峰 译
定  价:139
出 版 社:人民邮电出版社
出版日期:2020年09月01日
页  数:496
装  帧:平装
ISBN:9787115546494
1.Rust是一门新的系统编程语言,兼具C和C++的高性能和底层控制能力,而且能保证内存安全和线程安全,是系统编程发展目前的一个巨大进步; 2.本书对Rust进行了全面介绍,详细解释了这门语言的重要概念,并提供了大量清晰易懂的示例,逐步指导读者用Rust编写出既安全又高性能的程序; 3.本书由两位具有数十年经验的系统程序员撰写,他们不仅分享了自己对Rust的深刻见解,而且还提供了一些建议和操作实践,对Rust开发者和系统程序员十分有帮助。 ● Rust如何在内存中表示值(辅以图表) ● 完整解等
前言xv
章为什么是Rust1
第2章Rust初体验5
2.1下载和安装Rust5
2.2一个简单的函数7
2.3编写和运行单元测试9
2.4处理命令行参数9
2.5一个简单的Web服务器13
2.6并发19
2.6.1到底什么是曼德布洛特集合19
2.6.2解析成对的命令行参数23
2.6.3像素到复数的映射25
2.6.4绘制集合26
2.6.5写出图像文件27
2.6.6并发的曼德布洛特程序29
2.6.7运行曼德布洛特绘图器32
2.6.8安全无形34
第3章基本类型35
3.1机器类型38
3.1.1整数类型38
3.1.2浮点类型40
3.1.3布尔类型42
3.1.4字符类型43
3.2元组44
3.3指针类型45
3.3.1引用46
3.3.2Box46
3.3.3原始指针46
3.4数组、向量和切片47
3.4.1数组47
3.4.2向量48
3.4.3逐个元素地构建向量51
3.4.4切片51
3.5字符串类型52
3.5.1字符串字面量52
3.5.2字节字符串53
3.5.3字符串在内存中的表示53
3.5.4字符串55
3.5.5使用字符串56
3.5.6其他类似字符串的类型56
3.6更多类型57
第4章所有权58
4.1所有权59
4.2转移63
4.2.1更多转移操作68
4.2.2转移与控制流69
4.2.3转移与索引内容69
4.3Copy类型:转移的例外71
4.4Rc和Arc:共享所有权74
第5章引用76
5.1引用作为值79
5.1.1Rust引用与C++引用79
5.1.2给引用赋值80
5.1.3引用的引用81
5.1.4比较引用81
5.1.5引用永远不为空82
5.1.6借用对任意表达式的引用82
5.1.7对切片和特型对象的引用83
5.2引用安全83
5.2.1借用局部变量83
5.2.2接收引用作为参数86
5.2.3将引用作为参数传递87
5.2.4返回引用88
5.2.5结构体包含引用89
5.2.6不同的生命期参数91
5.2.7省略生命期参数92
5.3共享与修改93
5.4征服对象之海99
第6章表达式101
6.1表达式语言101
6.2块与分号102
6.3声明103
6.4if与match105
6.5循环107
6.6return表达式109
6.7为什么Rust有循环110
6.8函数与方法调用111
6.9字段与元素112
6.10引用操作符113
6.11算术、位、比较和逻辑操作符113
6.12赋值114
6.13类型转换114
6.14闭包115
6.15优先级与关联性116
6.16展望118
第7章错误处理119
7.1诧异119
7.1.1展开栈120
7.1.2中止进程121
7.2结果121
7.2.1捕获错误121
7.2.2结果类型别名123
7.2.3打印错误123
7.2.4传播错误124
7.2.5处理多种错误类型125
7.2.6处理“不会发生”的错误127
7.2.7忽略错误128
7.2.8在main()中处理错误128
7.2.9声明自定义错误类型129
7.2.10为什么是结果130
第8章包和模块131
8.1包131
8.2模块134
8.2.1把模块写在单独的文件中135
8.2.2路径和导入136
8.2.3标准前置模块138
8.2.4特性项,Rust的基础139
8.3将程序作为库发布141
8.4src/bin目录142
8.5属性143
8.6测试和文档145
8.6.1集成测试147
8.6.2文档148
8.6.3文档测试149
8.7指定依赖152
8.7.1版本152
8.7.2Cargo.lock153
8.8把包发布到crates.io154
8.9工作空间156
8.10还有惊喜156
第9章结构体158
9.1命名字段结构体158
9.2类元组结构体161
9.3类基元结构体161
9.4结构体布局162
9.5通过impl定义方法162
9.6泛型结构体165
9.7带生命期参数的结构体167
9.8为结构体类型派生共有特型168
9.9内部修改能力168
0章枚举与模式172
10.1枚举173
10.1.1包含数据的枚举175
10.1.2枚举的内存布局176
10.1.3使用枚举的富数据结构176
10.1.4泛型枚举178
10.2模式180
10.2.1模式中的字面量、变量和通配符183
10.2.2元组与结构体模式184
10.2.3引用模式185
10.2.4匹配多种可能性187
10.2.5模式护具188
10.2.6@模式188
10.2.7在哪里使用模式189
10.2.8填充二树190
10.3设计的考量191
1章特型与泛型192
11.1使用特型193
11.1.1特型目标194
11.1.2特型目标布局195
11.1.3泛型函数196
11.1.4使用哪一个199
11.2定义和实现特型200
11.2.1默认方法201
11.2.2特型与其他人的类型202
11.2.3特型中的Self204
11.2.4子特型205
11.2.5静态方法205
11.3完全限定方法调用207
11.4定义类型关系的特型208
11.4.1关联类型(或迭代器工作原理)208
11.4.2泛型特型(或操作符重载的原理)211
11.4.3伴型特型(或rand::random()工作原理)212
11.5逆向工程绑定213
11.6小结216
2章操作符重载217
12.1算术与位操作符218
12.1.1一元操作符220
12.1.2二元操作符221
12.1.3复合赋值操作符221
12.2相等测试222
12.3顺序比较225
12.4Index与Indext227
12.5其他操作符229
3章实用特型230
13.1Drop231
13.2Sized233
13.3Clone235
13.4Copy236
13.5Deref与Dereft237
13.6Default239
13.7AsRef与Ast241
13.8Borrow与Borrowt242
13.9From与Into244
13.10ToOwned245
13.11Borrow与ToOwned实例:谦逊的奶牛(Cow)246
4章闭包248
14.1捕获变量249
14.1.1借用值的闭包250
14.1.2盗用值的闭包250
14.2函数与闭包类型252
14.3闭包的性能254
14.4闭包和安全255
14.4.1杀值的闭包255
14.4.2FnOnce256
14.4.3Fnt257
14.5回调259
14.6有效使用闭包261
5章迭代器263
15.1Iterator和IntoIterator特型2
15.2创建迭代器265
15.2.1iter和iter_t方法265
15.2.2IntoIterator实现266
15.2.3drain方法268
15.2.4其他迭代器源268
15.3迭代器适配器269
15.3.1map和filter269
15.3.2filter_map和flat_map271
15.3.3scan273
15.3.4take和take_while274
15.3.5skip和skip_while274
15.3.6peekable275
15.3.7fuse276
15.3.8可逆迭代器与rev277
15.3.9inspect278
15.3.10chain278
15.3.11enumerate279
15.3.12zip279
15.3.13by_ref280
15.3.14cloned281
15.3.15cycle281
15.4消费迭代器282
15.4.1简单累计:count、sum和product282
15.4.2max和min283
15.4.3max_by和min_by283
15.4.4max_by_key和min_by_key283
15.4.5比较项序列284
15.4.6any和all285
15.4.7ition、rition和ExactSizeIterator285
15.4.8fold285
15.4.9nth286
15.4.10last286
15.4.11find287
15.4.12构建集合:collect和FromIterator287
15.4.13Extend特型289
15.4.14partition289
15.5实现自己的迭代器290
6章集合294
16.1概述295
16.2Vec296
16.2.1访问元素296
16.2.2迭代298
16.2.3增长和收缩向量298
16.2.4连接300
16.2.5拆分301
16.2.6交换303
16.2.7排序和搜索303
16.2.8比较切片304
16.2.9随机元素305
16.2.10Rust排除无效错误305
16.3VecDeque306
16.4LinkedList307
16.5BinaryHeap308
16.6HashMap和BTreeMap309
16.6.1条目311
16.6.2映射迭代313
16.7HashSet和BTreeSet313
16.7.1集迭代314
16.7.2相等的值不相同314
16.7.3整集操作315
16.8散列316
16.9标准集合之外318
7章字符串与文本319
17.1Unicode背景知识319
17.1.1ASCII、Latin-1和Unicode320
17.1.2UTF-8320
17.1.3文本方向性322
17.2字符(char)322
17.2.1字符分类322
17.2.2处理数字322
17.2.3字符大小写转换323
17.2.4与整数相互转换324
17.3String与str324
17.3.1创建字符串值325
17.3.2简单检查325
17.3.3追加和插入文本326
17.3.4删除文本327
17.3.5搜索与迭代的约定327
17.3.6搜索文本的模式328
17.3.7搜索与替换328
17.3.8迭代文本329
17.3.9修剪331
17.3.10字符串大小写转换331
17.3.11从字符串解析出其他类型331
17.3.12将其他类型转换为字符串332
17.3.13作为其他类文本类型借用333
17.3.14访问UTF-8格式的文本333
17.3.15从UTF-8数据产生文本334
17.3.16阻止分配335
17.3.17字符串作为泛型集合336
17.4格式化值337
17.4.1格式化文本值338
17.4.2格式化数值339
17.4.3格式化其他类型341
17.4.4为调试格式化值341
17.4.5为调试格式化指针342
17.4.6通过索引或名字引用参数342
17.4.7动态宽度与精度343
17.4.8格式化自定义类型344
17.4.9在你的代码中使用格式化语言345
17.5正则表达式346
17.5.1基本用法347
17.5.2懒构建Regex值348
17.6规范化349
17.6.1规范化形式350
17.6.2unicode-normalization包351
8章输入和输出352
18.1读取器和写入器353
18.1.1读取器354
18.1.2缓冲读取器355
18.1.3读取文本行356
18.1.4收集行358
18.1.5写入器359
18.1.6文件360
18.1.7搜寻360
18.1.8其他读取器和写入器类型361
18.1.9二进制数据、压缩与序列化362
18.2文件与目录3
18.2.1OsStr和Path3
18.2.2Path和PathBuf的方法365
18.2.3文件系统访问函数367
18.2.4读取目录368
18.2.5平台特定的特性369
18.3网络编程370
9章并发373
19.1并行分–合并374
19.1.1产生及合并376
19.1.2跨线程错误处理377
19.1.3跨线程共享不可修改数据378
19.1.4Rayon380
19.1.5重温曼德布洛特集合382
19.2通道383
19.2.1发送值385
19.2.2接收值387
19.2.3运行管道388
19.2.4通道特性与性能390
19.2.5线程安全:Send与Sync391
19.2.6将所有迭代器都接到通道上393
19.2.7管道394
19.3共享可修改状态395
19.3.1什么是互斥量395
19.3.2tex397
19.3.3t与tex398
19.3.4互斥量的问题399
19.3.5死锁399
19.3.6中毒的互斥量400
19.3.7使用互斥量的多消费者通道400
19.3.8读/写锁(RwLock)401
19.3.9条件变量(Condvar)402
19.3.10原子类型403
19.3.11全局变量404
19.4习惯编写Rust并发代码406
第20章宏407
20.1宏基础408
20.1.1宏扩展基础409
20.1.2意外结果410
20.1.3重复411
20.2内置宏413
20.3调试宏414
20.4json!宏415
20.4.1片段类型416
20.4.2在宏里使用递归419
20.4.3在宏里使用特型419
20.4.4作用域与自净宏421
20.4.5导入和导出宏424
20.5匹配时避免语法错误425
20.6macro_rules!426
第21章不安全代码427
21.1不安全源自哪里428
21.2不安全的块429
21.3不安全的函数431
21.4不安全的块还是不安全的函数433
21.5未定义行为434
21.6不安全的特型435
21.7原始指针437
21.7.1安全解引用原始指针439
21.7.2示例:RefWithFlag440
21.7.3可空指针442
21.7.4类型大小与对齐442
21.7.5指针算术443
21.7.6移入和移出内存444
21.7.7示例:GapBuffer447
21.7.8不安全代码中的诧异安全性453
21.8外来函数:在Rust中调用C和C++453
21.8.1查找共有数据表示454
21.8.2声明外来函数和变量456
21.8.3使用库函数458
21.8.4libgit2的原始接口461
21.8.5libgit2的安全接口466
21.9小结475
作者介绍476
封面介绍476
本书由两位经验丰富的系统程序员撰写,介绍了一种具有C和C++性能,同时安全且支持并发的新型系统编程语言Rust,解释了Rust如何在性能和安全性之间架起桥梁,以及我们如何用好这门语言。书中主要内容包括:Rust的基本数据类型,关于所有权、引用等概念,表达式、错误处理、包和模块、结构体、枚举与模式等基础知识,Rust语言的特型与泛型,闭包,迭代器,集合,等等。
(美)吉姆·布兰迪,(美)贾森·奥伦多夫 著 李松峰 译
吉姆·布兰迪,软件工程师,拥有近40年编程经验和30年自由软件开发经验,是Subversion版本控制系统初的设计者之一。