搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
出版时间 :
Rust编程:入门、实战与进阶
0.00     定价 ¥ 89.00
泸西县图书馆
此书还可采购1本,持证读者免费借回家
  • ISBN:
    9787111679103
  • 作      者:
    朱春雷
  • 出 版 社 :
    机械工业出版社
  • 出版日期:
    2021-04-01
收藏
荐购
编辑推荐

(1)作者资深:10余年开发经验,Rust技术专家、区块链技术专家,Web3meta Labs创始人兼CTO、Polkadot(波卡)技术大使。

(2)针对性强:针对性讲解Rust常用语法和重点知识,助读者快速掌握Rust编程必备能力。

(3)深入浅出:大幅降低Rust学习门槛,即使没有任何 Rust 编程经验的读者也能快速上手。

(4)学以致用:将各种常见数据结构和算法与Rust编程实战相结合,帮助读者将语法知识固化为实战能力。

(5)注重实战:以编码能力训练为核心,围绕并发编程等高阶知识进行综合训练,帮助读者快速在实战中实现提升。

展开
作者简介

朱春雷,北京大学软件工程硕士,资深Rust技术专家和区块链技术专家,有10年以上软件开发经验。 Web3meta Labs创始人兼首席技术官,Polkadot(波卡)技术大使,熟悉区块链技术框架Substrate开发。Web3meta Labs致力于为Ethereum、Polkadot等领先的区块链项目打造基础设施。

展开
内容介绍

这是一部注重编码能力训练的实战性著作,既能帮助读者扎实掌握Rust的主要语法知识并具备实战能力,又能指导读者快速从初学者晋级为高手。

全书秉持学以致用的原则:一方面,没有事无巨细地罗列Rust的每一个语法知识点,但是常用知识点和重要知识点悉数囊括;一方面,将各种常见数据结构和算法与Rust编程实战相结合,同时精选39道LeetCode高频算法面试题,帮助读者快速语法知识固化为实战能力。

全书共15章,分为3个部分:

第1部分(第1~11章) Rust编程必备语法
非常有针对性地讲解了Rust的常用语法,由浅入深,循序渐进,能帮助读者快速掌握Rust的必备语法知识并具备基本的编程能力

第二部分(第12~13章) Rust编码能力训练
将数组、栈、队列、哈希表、链表、树等实用的数据结构和递归、分治、回溯、二分查找、深度优先搜索、广度优先搜索、排序、动态规划等常用算法与Rust编程实战结合,并精选39道LeetCode高频算法面试真题,帮助读者将语法知识转化为编程实战能力。

第三部分(第14~15章) Rust综合进阶实战
以排序算法为主题,围绕功能拓展和性能拓展两条主线,结合工程管理、泛型、trait系统、高阶函数、闭包、迭代器、单元测试、多线程并发和异步并发等重要的语法知识点进行综合实战训练,进一步在实战中提升编程水平。

展开
精彩书评

众所周知,Rust因为所有权机制,实现数据结构和算法并不像其他语言那样自由。而这本书正好从算法和数据结构的实战角度切入,帮助读者在掌握 Rust 语言基础之后进一步深入理解所有权,独具匠心。
——张汉东 《Rust 编程之道》作者

本书在介绍Rust语法的基础之上,提供了很多有助于提高Rust开发技能的实例,对增强读者的动手能力大有裨益,是开发者学习Rust难得的参考资料。
——杨镇 《深入以太坊智能合约开发》作者

很高兴看到我的同学春雷愿意将自己的实战经验分享给大家,也很荣幸有机缘把他推荐给华章。这本书的内容循序渐进,方便读者快速上手,让读者在实践中理解原理。
——叶毓睿 《软件定义存储》作者

本书从Rust语言基础和编程能力训练两方面入手,前者能快速为读者打下基础,后者能让读者快速具备实战能力。除了Rust的基础知识和实战练习外,本书还讲解了Rust的异步并发系统,能让初学者更全面地领略Rust的优异之处。
——岳利鹏 Patract Labs创始人

通过这本书,初学者们不仅可掌握Rust编程必备的语法知识,还能够通过实战快速提升编码能力。希望有更多的开发者进入Rust的世界。
——雅珣 “一块+”区块链开发者社区创始人

Rust和Emacs的学习曲线类似,入门门槛比较高,让初级的区块链开发者望而却步。但Rust又特别适合区块链开发,春雷这本书详略得当、重点突出、浅显易懂,能大幅提升读者的学习效率。
——郭光华 链网科技CEO

目前,PPIO正尝试在P2P内容分发、分布式存储系统中使用Rust开发底层组件。春雷的书从基础语法到编码训练,再到综合实战,结构清晰,层层深入,能帮我们节省许多时间。
——谢晋 PPIO高级项目经理

展开
目录

【语言基础篇】


●第1章 初识Rust2

1.1 Rust语言简介2

1.2 搭建编程环境3

1.3 Hello Rust4

1.4 Hello Cargo5

1.5 本章小结7


●第2章 变量与数据类型8

2.1 变量和可变性8

2.1.1 变量声明8

2.1.2 变量的可变性9

2.1.3 变量遮蔽9

2.1.4 常量10

2.2 基本数据类型11

2.2.1 整数类型11

2.2.2 浮点数类型12

2.2.3 布尔类型12

2.2.4 字符类型12

2.2.5 范围类型12

2.3 复合数据类型13

2.3.1 元组类型13

2.3.2 数组类型14

2.3.3 结构体类型15

2.3.4 枚举类型17

2.4 容器类型18

2.4.1 Vec18

2.4.2 VecDeque21

2.4.3 HashMap25

2.5 字符串28

2.5.1 字符串的创建29

2.5.2 字符串的修改29

2.5.3 字符串的访问32

2.6 字面量和运算符34

2.6.1 字面量34

2.6.2 运算符34

2.7 本章小结35


●第3章 流程控制37

3.1 条件判断37

3.1.1 if条件判断37

3.1.2 if-else条件判断38

3.1.3 if-else if-else条件判断38

3.2 循环39

3.2.1 loop循环39

3.2.2 while循环40

3.2.3 for循环40

3.2.4 continue和break语句41

3.3 match模式匹配41

3.4 if let和while let模式匹配42

3.5 本章小结43


●第4章 函数、闭包与迭代器44

4.1 函数44

4.1.1 定义函数44

4.1.2 方法和函数46

4.1.3 高阶函数47

4.2 闭包50

4.2.1 基本语法50

4.2.2 类型推断50

4.2.3 捕获环境变量51

4.3 迭代器51

4.3.1 Iterator trait52

4.3.2 消费器52

4.3.3 迭代器适配器54

4.4 本章小结56


●第5章 类型系统57

5.1 泛型57

5.1.1 泛型与容器57

5.1.2 泛型与结构体58

5.1.3 泛型与枚举60

5.1.4 泛型与函数61

5.1.5 泛型与方法61

5.2 trait系统62

5.2.1 trait定义与实现62

5.2.2 trait作为参数63

5.2.3 返回实现trait的类型66

5.2.4 标准库常用trait66

5.3 类型转换71

5.3.1 原生类型间的转换71

5.3.2 数字与String类型间的转换72

5.3.3 &str与String类型间的转换73

5.4 本章小结73


●第6章 所有权系统74

6.1 通用概念74

6.1.1 栈内存与堆内存74

6.1.2 值语义与引用语义75

6.1.3 复制语义与移动语义75

6.2 所有权机制76

6.2.1 变量绑定76

6.2.2 所有权转移77

6.2.3 浅复制与深复制81

6.3 引用和借用83

6.3.1 引用与可变引用83

6.3.2 借用规则87

6.3.3 借用示例1:切片88

6.3.4 借用示例2:迭代器90

6.4 生命周期92

6.4.1 生命周期语法92

6.4.2 悬垂引用94

6.4.3 生命周期与函数96

6.4.4 生命周期与结构体98

6.4.5 生命周期省略规则100

6.5 本章小结100


●第7章 智能指针102

7.1 独占所有权的Box<T>102

7.1.1 Box<T>在堆上存储数据102

7.1.2 Deref解引用103

7.1.3 Drop清理资源104

7.2 共享所有权的Rc<T>105

7.3 应对内部可变性的RefCell<T>106

7.4 本章小结108


●第8章 并发编程109

8.1 多线程并发109

8.1.1 线程管理110

8.1.2 线程池114

8.2 异步并发115

8.2.1 async/.await语法115

8.2.2 async-std库117

8.3 本章小结119


●第9章 错误处理120

9.1 Result<T, E>120

9.1.1 高效处理Result<T, E>121

9.1.2 处理不同类型的错误122

9.1.3 传播错误123

9.2 Panic125

9.2.1 追踪Panic125

9.2.2 捕获Panic126

9.3 本章小结127


●第10章 模块化编程128

10.1 crate管理128

10.1.1 使用Cargo创建crate129

10.1.2 使用第三方crate129

10.2 module系统130

10.2.1 定义模块130

10.2.2 创建多文件模块131

10.2.3 多文件模块的层级关系132

10.2.4 模块的可见性133

10.2.5 使用use导入模块135

10.2.6 模块的路径136

10.2.7 使用pub use重导出136

10.2.8 加载外部crate137

10.3 本章小结138


●第11章 单元测试139

11.1 单元测试框架139

11.2 编写测试140

11.2.1 使用assert!140

11.2.2 使用assert_eq!和assert_ne!141

11.2.3 自定义失败信息142

11.3 运行测试143

11.3.1 运行部分测试144

11.3.2 忽略某些测试145

11.4 本章小结146


【编程能力训练篇】


●第12章 数据结构实战148

12.1 数组148

12.1.1 移动零149

12.1.2 加一156

12.1.3 删除排序数组中的重复项158

12.2 栈与队列159

12.2.1 最小栈160

12.2.2 有效的括号163

12.2.3 滑动窗口最大值165

12.3 哈希表168

12.3.1 两数之和170

12.3.2 有效的字母异位词172

12.3.3 字母异位词分组174

12.4 链表179

12.4.1 反转链表182

12.4.2 链表的中间节点183

12.4.3 合并两个有序链表185

12.4.4 删除链表的倒数第n个节点187

12.5 树191

12.5.1 二叉树的前序遍历195

12.5.2 二叉树的中序遍历199

12.5.3 二叉树的后序遍历202

12.5.4 二叉树的层次遍历206

12.5.5 二叉搜索树中的插入操作208

12.6 本章小结211


●第13章 算法实战213

13.1 递归、分治与回溯213

13.1.1 pow(x, n)216

13.1.2 爬楼梯218

13.1.3 括号生成220

13.1.4 子集222

13.1.5 组合224

13.1.6 N皇后227

13.2 二分查找230

13.2.1 搜索旋转排序数组231

13.2.2 寻找旋转排序数组中的最小值232

13.2.3 有效的完全平方数235

13.3 深度与广度优先搜索236

13.3.1 二叉树的最大深度239

13.3.2 二叉树的最小深度242

13.3.3 二叉搜索树中的搜索244

13.4 排序算法246

13.4.1 数组中的第k个最大元素257

13.4.2 合并区间259

13.4.3 翻转对261

13.5 动态规划264

13.5.1 爬楼梯265

13.5.2 最小路径和267

13.5.3 三角形最小路径和269

13.5.4 零钱兑换270

13.5.5 最长上升子序列273

13.5.6 编辑距离274

13.6 本章小结277


【综合实战篇】

●第14章 泛型与高阶函数实战280

14.1 工程管理280

14.2 泛型编程281

14.2.1 插入排序算法282

14.2.2 加载算法库284

14.2.3 结构体实例排序285

14.3 高阶函数编程287

14.3.1 排序算法库287

14.3.2 生成随机数据291

14.3.3 排序算法API库292

14.4 本章小结295

●第15章 并发编程实战296

15.1 多线程并发296

15.2 异步并发298

15.2.1 排序算法库的异步实现298

15.2.2 排序算法API库的异步实现302

15.2.3 创建可执行程序303

15.3 本章小结305


展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

温馨提示:请使用泸西县图书馆的读者帐号和密码进行登录

点击获取验证码
登录