新書推薦:
《
创作经典
》
售價:HK$
140.8
《
西方殖民帝国的崛起(1492?1914)
》
售價:HK$
96.8
《
ChatGPT数据分析实践
》
售價:HK$
108.9
《
人格分裂手记
》
售價:HK$
54.8
《
并购与重组 : 理念、策略、流程、实战一本通
》
售價:HK$
74.8
《
分析论文集(分析哲学名著译丛)
》
售價:HK$
71.5
《
自主论:何为自主以及何以自主
》
售價:HK$
107.8
《
向整个世界说一声早
》
售價:HK$
54.8
|
編輯推薦: |
Rust致力于成为优雅解决高并发和高安全性系统问题的编程语言,适用于大型场景,它同时拥有着像C 一般出色的运行效率和ECMAScript一般的代码风格。
本书内容翔实、层次分明、逻辑通透,全书采用了大量实例,更易于理解。全书涵盖以下主题:Rust编程语言基础知识、所有权机制、Cargo包管理器、工程组织与访问权、无畏并发、线程通信、“属性”和“宏”、“不安全”语法、Web编程等。
|
內容簡介: |
《Rust编程从入门到实战》是一部Rust编程语言的编程手册,第1~3章为Rust前置知识,介绍了开发环境搭建、第一个Rust程序以及语言的输入输出;第4~16章为Rust基础语法知识,介绍了Rust基础的语法和必要的语言使用规则,其中包括Rust所有权、生命周期以及特性等重要语言概念的介绍;第17~27章为Rust实用操作,介绍了文件与I/O、无畏并发、Web编程等重要的经典开发实战以及属性、宏、“不安全”语法等Rust高级编程。 《Rust编程从入门到实战》适合Rust语言初学者学习使用,也可供Rust开发者参考使用,还可作为高等院校相关专业的教材。
|
目錄:
|
第1章 Rust编程语言概述 1
1.1 编程语言 1
1.2 Rust语言 2
1.2.1 为什么选择Rust 2
1.2.2 在哪里能使用Rust 2
1.3 Hello, Rust! 3
第2章 开发环境 4
2.1 工具链 4
2.1.1 Windows系统上的安装 4
2.1.2 在GNU/Linux上安装 6
2.1.3 在其他操作系统上安装 7
2.1.4 卸载 7
2.2 集成开发环境 7
2.3 CLion安装与部署 8
2.3.1 下载和安装CLion 8
2.3.2 配置CLion 9
第3章 开发命令行程序 13
3.1 输出到命令行 13
3.2 详细输出 14
3.3 从命令行输入 15
3.4 从命令参数中获取 16
第4章 基础语法 18
4.1 变量 18
4.2 重影 20
4.3 常量 20
4.4 静态变量 21
第5章 Rust数据类型 23
5.1 整数型 23
5.2 浮点数型 24
5.3 数学运算 24
5.3.1 基础运算 24
5.3.2 数学函数 24
5.4 布尔型 25
5.5 逻辑运算 25
5.6 字符型 26
5.7 字符串 27
5.8 元组 28
5.9 数组 29
第6章 注释 31
6.1 常规注释 31
6.2 说明文档注释 31
6.3 生成工程文档 33
第7章 函数 34
7.1 函数的声明 34
7.2 函数语句与函数表达式 35
7.2.1 函数语句与表达式 35
7.2.2 函数返回值 35
7.2.3 函数表达式 36
7.3 函数对象 37
7.4 闭包(Lambda表达式) 37
第8章 条件语句 39
8.1 if-else 语句 39
8.2 三元运算符 40
8.3 match语句——Rust中的switch 41
第9章 循环结构 43
9.1 while循环 43
9.2 for 循环 44
9.3 loop 循环 45
第10章 所有权 47
10.1 内存管理 47
10.1.1 内存的概念 47
10.1.2 主流的内存管理机制 48
10.2 所有权机制 48
10.2.1 变量范围 49
10.2.2 生命周期 49
10.2.3 转移 50
10.2.4 复制 50
10.2.5 引用和借用 51
10.2.6 垂悬引用 51
10.3 与函数相关的所有权 52
10.3.1 参数所有权 52
10.3.2 返回值所有权 53
10.4 引用类型 54
10.4.1 引用的用途 54
10.4.2 可变引用 55
10.4.3 解引用运算符 56
第11章 切片类型 58
11.1 字符串切片 58
11.2 数组切片 59
第12章 复合类型 60
12.1 结构体 60
12.1.1 结构体的定义 60
12.1.2 结构体的实例化 60
12.1.3 结构体所有权 61
12.1.4 结构体方法 64
12.1.5 元组结构体 66
12.1.6 单元结构体 66
12.2 枚举类 66
12.2.1 枚举类的定义 67
12.2.2 枚举类的match语法 68
12.2.3 if-let语法 69
12.2.4 枚举类的方法 70
第13章 泛型 72
13.1 泛型函数 72
13.2 复合类型的泛型 73
13.2.1 泛型结构体 73
13.2.2 泛型枚举类 74
13.3 impl泛型 75
13.3.1 对泛型类实现方法 75
13.3.2 对具体类实现方法 76
13.3.3 泛型方法 76
第14章 错误处理与空值 78
14.1 错误与错误处理 78
14.2 不可恢复错误 78
14.3 可恢复错误 79
14.3.1 Result枚举类 80
14.3.2 可恢复错误的传递 81
14.3.3 Error类型和它的kind方法 82
14.4 “空引用” 83
14.4.1 Null的概念 84
14.4.2 Option枚举类 84
第15章 工程组织和访问权 86
15.1 工程组织概念 86
15.1.1 箱 86
15.1.2 包 87
15.1.3 模块 87
15.2 访问权 88
15.2.1 模块访问权 88
15.2.2 结构体访问权 89
15.2.3 枚举类访问权 90
15.3 use 关键字 90
15.4 引用标准库 91
15.5 多源文件工程 92
15.5.1 新建源文件 92
15.5.2 运行多源文件程序 92
15.6 Cargo 93
15.6.1 Cargo是什么 93
15.6.2 Cargo功能 93
15.6.3 Cargo导入外部包 94
第16章 特性 96
16.1 定义特性 96
16.2 实现特性 96
16.3 默认特性 98
16.4 特性作参数 99
16.4.1 常规特性参数 99
16.4.2 泛型特性参数 100
16.4.3 特性叠加 101
16.5 特性作返回值 102
16.6 有条件的实现方法 104
第17章 文件与I/O 105
17.1 关于文件的概念 105
17.1.1 文件 105
17.1.2 流 105
17.2 打开文件 106
17.2.1 打开文件的种类 106
17.2.2 只读模式 106
17.3 创建新文件模式 109
17.3.1 创建新文件 109
17.3.2 覆盖文件 110
17.4 追加模式 110
17.5 自定义模式打开文件 111
17.5.1 OpenOptions对象 111
17.5.2 以读写模式打开文件 112
17.6 写入和读取二进制信息 114
17.7 文件系统 115
17.7.1 列出目录 115
17.7.2 创建目录 116
17.7.3 删除文件或目录 116
第18章 数据结构与集合 118
18.1 线性数据结构 118
18.1.1 向量 120
18.1.2 双端向量 124
18.1.3 链表 125
18.2 字符串 125
18.2.1 将数据转换为字符串 126
18.2.2 拼接字符串 127
18.2.3 字符串截取 128
18.2.4 UTF-8编码 129
18.3 映射表 131
18.3.1 散列映射表 131
18.3.2 B树映射表 132
18.4 集 133
18.4.1 散列集 133
18.4.2 B树集 135
18.5 堆 136
18.5.1 二叉堆 136
18.5.2 从向量创建堆 137
第19章 面向对象编程思想的实现 139
19.1 类 139
19.2 对象 141
19.3 封装 142
19.4 继承 143
19.5 多态 145
第20章 堆内存区 147
20.1 内存的分配方式 147
20.2 Box类型 148
20.3 Box解引用特性 150
20.4 dyn关键字 151
20.5 Box的所有权 151
第21章 高级引用 152
21.1 Box引用 152
21.2 Rc——引用计数 152
21.3 Mutex——互斥锁 155
第22章 运算符方法 158
22.1 Rust运算符方法 158
22.2 实现运算符方法 159
22.2.1 实现复数加法 159
22.2.2 引用类型运算符方法实现 160
22.3 支持实现运算符方法的运算符 161
22.4 特殊的运算符 162
22.4.1 Deref和DerefMut特性 162
22.4.2 Drop特性 163
22.4.3 Fn、FnMut和FnOnce特性 164
第23章 无畏并发 168
23.1 并发和问题 168
23.1.1 数据共用 168
23.1.2 数据回收 169
23.1.3 死锁 169
23.1.4 线程通信 169
23.2 多线程 170
23.3 线程通信 171
23.4 Arc线程安全引用计数 173
23.5 应对互斥锁死锁 175
23.5.1 用一个互斥锁保护 177
23.5.2 使用“标志互斥锁” 178
第24章 属性 180
24.1 属性的使用 180
24.2 条件编译属性 181
24.2.1 cfg 属性 181
24.2.2 test条件编译 182
24.2.3 “cfg_attr”属性 183
24.3 derive 派生属性 183
24.4 诊断属性 185
24.4.1 lint检查属性 185
24.4.2 deprecated属性 187
24.4.3 must_use属性 187
24.5 模块路径属性 188
24.6 其他属性 189
第25章 宏 190
25.1 宏的使用 190
25.2 宏的定义 191
25.3 过程宏 193
25.3.1 类函数过程宏 193
25.3.2 派生过程宏 196
25.3.3 属性宏 198
第26章 “不安全”语法 200
26.1 “不安全”域 200
26.2 原始指针 201
26.3 “不安全”的函数和方法 202
26.4 访问静态变量 203
26.5 “不安全”特性 204
26.6 共用体 205
第27章 Web服务器程序 208
27.1 TCP简介 208
27.1.1 建立TCP连接 209
27.1.2 搭建TCP服务器 209
27.2 UDP简介 212
27.3 简易的HTTP服务器 213
IV
V
|
內容試閱:
|
上大学期间,我从事过编译器的研究与实现,这个过程并不顺利,最终并没有开发出可以在生产环境中使用的编译器产品(像GCC或LLVM那样)。但这个过程让我个人收获很大,尤其在对编程语言的研究方面。
作为一个精通C语言的开发者,我同时在使用很多其他的编程语言,这是为了适应不同类型产品的开发需要。大量的开发过程让我全面地了解了这些编程语言(如C 、Java、ECMAScript、Kotlin甚至FORTRAN),与众不同的编程语法以及设计者的编程思想。在了解这些之后,我常常会将它们的优点相互比较,并尝试以一个较为通用的语言作为基础,希望设计出一个能解决大多数迄今为止计算机科学家们发现的主要编程问题的编程语言。这些想法往往会在开发过程中不由自主地产生。
经过长时间的思考与经验积累,我认为一个优秀的编程语言必须具备以下特质。
(1)执行高效。最好能直接编译到硬件原生语言(机器语言),避免解释执行。
(2)编译时保障内存安全。在编译时能够确定数据的生命周期,防止垃圾的产生或在运行时检测并回收垃圾。
(3)并发安全。能够适应高并发环境并保证运行安全。
(4)支持面向对象编程。能够实现面向对象的编程思想。
(5)结构管理。可以使用包管理器管理代码,并具有良好的程序结构。
(6)易于学习和使用。软件效率不仅体现在运行上,还体现在开发上。
具备了以上6点特质,基本上就是一门“完美语言”。我认为这种语言是不存在的,或者正在开发中。但事情往往就是这样,你认为没有诞生的东西往往已经被开发很久了。Rust语言就几乎具备以上全部的优秀特质。
Rust语言完全具备以上前5条特质,唯一的缺点就是不那么易于学习,这是因为以上总结出的优点都是主流编程语言存在问题的解决方法,意识到这些问题需要大量的实践,而且只有在意识到这些问题之后,才会理解这些优秀特质在开发中发挥的重要作用。因此,Rust语言为了实现这些特质采用了很多还没有流行起来的新方法(例如所有权机制)的作用较为难以理解,也就难以被学习。
编写本书的目的是让Rust学习变得更加容易,适合Rust入门者学习和使用参考。书中将Rust语言最经典、最广泛的语法以程序实例的方式介绍给读者,并尽可能地将它们讲得通俗易懂。本书内容依赖的背景知识会在章节开始介绍,如果这些知识对您来说驾轻就熟,请忽略它们。但是,Rust语言绝对不适合作为刚刚接触编程的入门者学习,学习它之前请尽量掌握C语言、C 语言等有关知识,它们是学习Rust语言知识的依赖项。
作者在本书出版前曾在“菜鸟教程”网站发布过社区版教程,且得到了来自Rust全球社区的支持,这些支持使书中的内容更加全面。
总体来说,Rust语言不是一门易于学习的语言。抱着这个心态,您也许可以更容易地学习这门语言。这门语言几乎可以在C 能够运行的一切环境中运行,且运行效率非常高,它的高并发能力被迄今为止使用过它的开发者们赞不绝口。
希望这个由Mozilla基金会开发的编程语言带给您全新的编程体验!
本书提供程序代码等配套资源,请扫描下方二维码或者到清华大学出版社官方网站本书页面下载。
配套资源
樊少冰
2022年3月
II
III
|
|