-
内容大纲
这是一本专为初学者量身打造的Rust编程指南,无论你是编程新手还是希望快速提升Rust编程技巧的开发者,本书都是你的不二之选。本书共有24章,包括基础知识,内存、变量和所有权,更复杂的类型,泛型、Option和Result,集合与错误处理,迭代器和闭包,生命周期和内部可变性,多线程,Box和Rust文档,测试,默认值、构建者模式和Deref,常量、不安全的Rust、外部crates,异步Rust,标准库、宏等。从基础概念到高级特性,全面覆盖,无须复杂设置。本书都将以清晰易懂的方式,引领你步入Rust编程的殿堂,开启高效、安全编程的新篇章。
本书适合想要系统学习Rust编程语言的初学者阅读,也适合经验丰富的程序员细细品味。 -
作者介绍
王鹏 谷歌开发者专家,字节跳动资深研发,十多年大厂经验,参与过多款国民级应用的设计研发,CSDN、掘金等平台签约作者,活跃于各技术社区,目前致力于Rust推广与实践。 -
目录
序
前言
第1章 一些基础知识
1.1 注释
1.2 原始类型:整数、字符和字符串
1.3 类型推断
1.4 浮点数
1.5 Hello World和打印
1.6 声明变量和代码块
1.7 显示和调试
1.8 最小值和最大值
1.9 可变性
1.10 变量遮蔽(Shadowing)
1.11 总结
第2章 内存、变量和所有权
2.1 栈、堆和指针
2.2 字符串
2.3 常量和静态变量
2.4 引用的更多内容
2.5 可变引用
2.5.1 Rust的引用规则
2.5.2 情景一:只有一个可变引用
2.5.3 情景二:仅有不可变引用
2.5.4 情景三:问题情况
2.6 再聊聊变量遮蔽
2.7 将引用传递给函数
2.8 复制(Copy)类型
2.9 变量没有值
2.10 关于打印的更多内容
2.11 总结
第3章 更复杂的类型
3.1 集合类型
3.1.1 数组
3.1.2 Vec(向量)
3.1.3 元组
3.2 控制流
3.2.1 基本控制流
3.2.2 匹配语句
3.2.3 循环
3.3 总结
第4章 构建你自己的类型
4.1 结构体和枚举概述
4.1.1 结构体
4.1.2 枚举
4.1.3 将枚举类型转换为整数
4.1.4 枚举使用多种类型
4.1.5 实现结构体和枚举
4.2 解构
4.3 引用和点运算符
4.4 总结
第5章 泛型、Option和Result
5.1 泛型
5.2 Option和Result
5.2.1 Option
5.2.2 Result
5.2.3 其他一些模式匹配的方法
5.3 总结
第6章 更多的集合,更多的错误处理
6.1 其他集合
6.1.1 HashMap和BTreeMap
6.1.2 HashSet和BTreeSet
6.1.3 二叉堆
6.1.4 VecDeque
6.2 问号运算符
6.3 当panic和unwrap是合适的
6.4 总结
第7章 特性:使不同类型执行相同的操作
7.1 特性:基础知识
7.1.1 你所需要的只是方法签名
7.1.2 更复杂的例子
7.1.3 特性约束
7.1.4 Traits类似于资格认证
7.2 From特性
7.3 孤儿规则
7.4 绕过孤儿规则的方法之一是使用新类型
7.5 在函数中接受String和&str
7.6 总结
第8章 迭代器和闭包
8.1 方法链
8.2 迭代器
8.3 闭包和迭代器中的闭包
8.4 总结
第9章 再谈迭代器和闭包!
9.1 闭包和迭代器的有用方法
9.1.1 映射和过滤
9.1.2 更多的迭代器和相关方法
9.1.3 在迭代器中检查和查找项目
9.1.4 循环、压缩、折叠等
9.2 调试宏dbg!和.inspect
9.3 总结
第10章 生命周期和内部可变性
10.1 &str的类型
10.2 生命周期注解
10.2.1 函数中的生命周期
10.2.2 类型中的生命周期注解
10.2.3 匿名生命周期
10.3 内部可变性
10.3.1 Cell
10.3.2 RefCell
10.3.3 Mutex
10.3.4 RwLock
10.4 总结
第11章 多线程及更多内容
11.1 在函数内部导入和重命名
11.2 todo! 宏
11.3 类型别名
11.4 Cow
11.5 Rc
11.5.1 Rc的存在原因
11.5.2 实践中使用Rc
11.5.3 使用Rc避免生命周期注解
11.6 多线程
11.6.1 创建线程
11.6.2 使用JoinHandle等待线程完成
11.6.3 闭包的类型
11.6.4 使用move关键字
11.7 总结
第12章 关于闭包、泛型和线程的更多内容
12.1 闭包作为参数
12.1.1 一些简单的闭包
12.1.2 FnOnce、FnMut和Fn之间的关系
12.1.3 闭包都是独一无二的
12.1.4 闭包示例
12.2 impl Trait
12.2.1 常规泛型与impl Trait的比较
12.2.2 使用impl Trait返回闭包
12.3 Arc
12.4 作用域线程
12.5 通道(Channel)
12.5.1 通道基础
12.5.2 实现一个通道
12.6 总结
第13章 Box和Rust文档
13.1 阅读Rust文档
13.1.1 assert_eq
13.1.2 搜索
13.1.3 [src]按钮
13.1.4 特性信息
13.1.5 属性
13.2 Box
13.2.1 Box的基础知识
13.2.2 将traits放入Box
13.2.3 使用Box处理多种错误类型
13.2.4 将trait对象向下转型为具体类型
13.3 总结
第14章 测试
14.1 包和模块
14.1.1 模块基础
14.1.2 关于pub关键字的更多信息
14.1.3 模块内的模块
14.2 测试
14.2.1 只需添加#[test],它就变成了一个test
14.2.2 当测试失败时发生了什么
14.2.3 编写多个测试
14.3 测试驱动开发(TDD)
14.3.1 构建一个计算器:从编写测试开始
14.3.2 真正将计算器拼凑起来
14.4 总结
第15章 默认值、构建者模式和Deref
15.1 实现Default
15.2 构建者模式
15.2.1 编写构建者方法
15.2.2 在构建者模式中添加最终检查
15.2.3 使构建者模式更严格
15.3 Deref和DerefMut
15.3.1 Deref基础知识
15.3.2 实现Deref
15.3.3 实现DerefMut
15.3.4 错误使用Deref
15.4 总结
第16章 常量、不安全的Rust、外部crates
16.1 常量泛型
16.2 常量函数
16.3 可变的静态变量
16.4 不安全的Rust
16.4.1 概述
16.4.2 在不安全的Rust中使用静态可变变量
16.4.3 Rust中最著名的不安全方法
16.4.4 以_unchecked结尾的方法
16.5 引入外部crate
16.5.1 Crates和Cargo.toml
16.5.2 使用rand crate
16.5.3 使用rand函数掷骰子
16.6 总结
第17章 Rust最流行的crate
17.1 serde
17.2 标准库中的时间
17.3 chrono
17.3.1 检查外部库中的代码
17.3.2 再次回到chrono
17.4 rayon
17.5 anyhow和thiserror
17.5.1 anyhow
17.5.2 thiserror
17.6 通用特性实现
17.7 lazy_static和once_cell
17.7.1 lazy_static:延迟评估的静态变量
17.7.2 OnceCell:只能写入一次的单元
17.8 总结
第18章 在你的计算机上使用Rust
18.1 Cargo
18.1.1 为什么每个人都使用Cargo
18.1.2 使用Cargo和Rust编译时的操作
18.2 处理用户输入
18.2.1 通过stdin的用户输入
18.2.2 访问命令行参数
18.2.3 访问环境变量
18.3 使用文件
18.3.1 创建文件
18.3.2 打开现有文件
18.3.3 使用OpenOptions处理文件
18.4 Cargo doc
18.5 总结
第19章 更多crate和异步Rust
19.1 reqwest crate
19.2 特性标志
19.3 异步Rust
19.3.1 异步基础
19.3.2 检查Future是否准备好
19.3.3 使用异步运行时
19.3.4 关于异步Rust的其他一些细节
19.4 总结
第20章 标准库之旅
20.1 数组
20.1.1 数组现在实现了迭代器
20.1.2 解构和映射数组
20.1.3 使用from_fn创建数组
20.2 字符(char)
20.3 整数
20.3.1 检查操作
20.3.2 Add特性和其他类似特性
20.4 浮点数
20.5 关联项和关联常量
20.5.1 关联函数
20.5.2 关联类型
20.5.3 关联常量
20.6 bool
20.7 Vec
20.8 String
20.9 OsString和CString
20.10 总结
第21章 继续游览标准库
21.1 std∷mem
21.2 设置panic钩子
21.3 查看回溯(backtrace)
21.4 标准库的前言(prelude)
21.5 其他宏
21.5.1 unreachable
21.5.2 column!, line!, file module_path
21.5.3 thread_local
21.5.4 cfg
21.6 总结
第22章 编写自己的宏
22.1 宏存在的原因
22.2 编写基本宏
22.3 从标准库中读取宏
22.4 使用宏保持代码整洁
22.5 总结
第23章 项目实战——半成品项,需要等你完成
23.1 为最后两章设置项目
23.2 打字教程
23.2.1 设置和第一段代码
23.2.2 开发代码
23.2.3 进一步开发和清理
23.2.4 现在轮到你了
23.3 维基百科文章摘要搜索器
23.3.1 设置和第一段代码
23.3.2 开发代码
23.3.3 进一步开发和清理
23.3.4 现在轮到你了
23.4 终端秒表和时钟
23.4.1 设置和第一段代码
23.4.2 开发代码
23.4.3 进一步开发和清理
23.4.4 现在轮到你了
23.5 总结
第24章 项目实战,继续挑战未完成的项目
24.1 网页服务器猜词游戏
24.1.1 设置和第一段代码
24.1.2 开发代码
24.1.3 进一步开发和清理
24.1.4 现在轮到你了
24.2 激光笔
24.2.1 设置和第一段代码
24.2.2 开发代码
24.2.3 进一步开发和清理
24.2.4 现在轮到你了
24.3 目录和文件导航器
24.3.1 设置和第一段代码
24.3.2 开发代码
24.3.3 进一步开发和清理
24.3.4 现在轮到你了
24.4 总结
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-

孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-

时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-

本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...
[
