4.5 用户推荐指数
互联网
类型
7.5
豆瓣评分
可以朗读
语音朗读
340千字
字数
2021-01-01
发行日期
展开全部
主编推荐语
学习Rust编程,掌握更高端的编程范式,成就高段位的编程极客。
内容简介
Rust是一门系统编程语言,是支持函数式、命令式以及泛型等编程范式的多范式语言。Rust在语法上和C++类似。Rust快速、可靠、安全,它提供了甚至超过C/C++的性能和安全保证,同时它也是一种学习曲线比较平滑的热门编程语言。
本书内容共17章,由浅入深地讲解Rust相关的知识,涉及基础语法、软件包管理器、测试工具、类型系统、内存管理、异常处理、高级类型、并发模型、宏、外部函数接口、网络编程、HTTP、数据库、WebAssembly、GTK+框架和GDB调试等重要知识点。
本书适合想学习Rust编程的读者阅读,希望读者能够对C、C++或者Python有一些了解。书中丰富的代码示例和详细的讲解能够帮助读者快速上手,高效率掌握Rust编程。
目录
- 版权信息
- 内容提要
- 作者简介
- 审稿人简介
- 前言
- 资源与支持
- 第1章 Rust入门
- 1.1 Rust是什么,以及为何需要关注它
- 1.2 安装Rust工具链
- rustup.rs
- 1.3 Rust简介
- 1.3.1 基元类型
- 1.3.2 变量声明和不可变性
- 1.3.3 函数
- 1.3.4 闭包
- 1.3.5 字符串
- 1.3.6 条件和判断
- 1.3.7 match表达式
- 1.3.8 循环
- 1.3.9 自定义数据类型
- 1.3.10 类型上的函数和方法
- 1.3.11 module、import和use语句
- 1.3.12 集合
- 1.3.13 迭代器
- 1.4 改进字符计数器
- 1.5 小结
- 第2章 使用Cargo管理项目
- 2.1 软件包管理器
- 2.2 模块
- 2.2.1 嵌套模块
- 2.2.2 将文件用作模块
- 2.2.3 将目录用作模块
- 2.3 Cargo和程序库
- 2.3.1 新建一个Cargo项目
- 2.3.2 Cargo与依赖项
- 2.3.3 使用Cargo执行测试
- 2.3.4 使用Cargo运行示例
- 2.3.5 Cargo工作区
- 2.4 Cargo工具扩展
- 2.4.1 子命令和Cargo安装
- 2.4.2 使用clippy格式化代码
- 2.4.3 Cargo.toml清单文件简介
- 2.5 搭建Rust开发环境
- 2.6 使用Cargo构建imgtool程序
- 2.7 小结
- 第3章 测试、文档化和基准评估
- 3.1 测试的目的
- 3.2 组织测试
- 测试原语
- 3.3 单元测试
- 3.3.1 第一个单元测试
- 3.3.2 运行测试
- 3.3.3 隔离测试代码
- 3.3.4 故障测试
- 3.3.5 忽略测试
- 3.4 集成测试
- 3.4.1 第一个集成测试
- 3.4.2 共享通用代码
- 3.5 文档
- 3.5.1 编写文档
- 3.5.2 生成和查看文档
- 3.5.3 托管文档
- 3.5.4 文档属性
- 3.5.5 文档化测试
- 3.6 基准
- 3.6.1 内置的微观基准工具
- 3.6.2 稳定版Rust上的基准测试
- 3.7 编写和测试软件包——逻辑门模拟器
- 3.8 CI集成测试与Travis CI
- 3.9 小结
- 第4章 类型、泛型和特征
- 4.1 类型系统及其重要性
- 4.2 泛型
- 4.2.1 创建泛型
- 4.2.2 泛型实现
- 4.2.3 泛型应用
- 4.3 用特征抽象行为
- 4.3.1 特征
- 4.3.2 特征的多种形式
- 4.4 使用包含泛型的特征——特征区间
- 4.4.1 类型上的特征区间
- 4.4.2 泛型函数和impl代码块上的特征区间
- 4.4.3 使用“+”将特征组合为区间
- 4.4.4 特征区间与impl特征语法
- 4.5 标准库特征简介
- 4.6 使用特征对象实现真正的多态性
- 4.6.1 分发
- 4.6.2 特征对象
- 4.7 小结
- 第5章 内存管理和安全性
- 5.1 程序和内存
- 5.2 程序如何使用内存
- 5.3 内存管理及其分类
- 5.4 内存分配简介
- 5.4.1 堆栈
- 5.4.2 堆
- 5.5 内存管理的缺陷
- 5.6 内存安全性
- 5.7 内存安全三原则
- 5.7.1 所有权
- 5.7.2 通过特征复制类型
- 5.7.3 借用
- 5.7.4 基于借用规则的方法类型
- 5.7.5 生命周期
- 5.8 Rust中的指针类型
- 5.8.1 引用——安全的指针
- 5.8.2 原始指针
- 5.8.3 智能指针
- 5.8.4 引用计数的智能指针
- 5.8.5 内部可变性的应用
- 5.9 小结
- 第6章 异常处理
- 6.1 异常处理简介
- 6.2 可恢复的异常
- 6.2.1 Option
- 6.2.2 Result
- 6.3 Option/Result的组合
- 6.3.1 常见的组合器
- 6.3.2 组合器应用
- 6.3.3 Option和Result类型之间的转换
- 6.4 及早返回和运算符“?”
- 6.5 不可恢复的异常
- 人机友好的灾难性故障
- 6.6 自定义错误和Error特征
- 6.7 小结
- 第7章 高级概念
- 7.1 类型系统简介
- 7.1.1 代码块和表达式
- 7.1.2 let语句
- 7.1.3 循环作为表达式
- 7.1.4 数字类型中的类型清晰度和符号区分
- 7.1.5 类型推断
- 7.1.6 类型别名
- 7.2 字符串
- 7.2.1 包含所有权的字符串——String
- 7.2.2 借用字符串——&str
- 7.2.3 字符串切片和分块
- 7.2.4 在函数中使用字符串
- 7.2.5 字符串拼接
- 7.2.6 &str和String的应用场景
- 7.3 全局值
- 7.3.1 常量
- 7.3.2 静态值
- 7.3.3 编译期函数——const fn
- 7.3.4 通过lazy_static!宏将静态值动态化
- 7.4 迭代器
- 实现自定义迭代器
- 7.5 高级类型
- 7.5.1 不定长类型
- 7.5.2 函数类型
- 7.5.3 never类型“!”和函数分发
- 7.5.4 联合
- 7.5.5 Cow
- 7.6 高级特征
- 7.6.1 Sized和?Sized
- 7.6.2 Borrow和AsRef
- 7.6.3 ToOwned
- 7.6.4 From和Into
- 7.6.5 特征对象和对象安全性
- 7.6.6 通用函数调用语法
- 7.6.7 特征规则
- 7.7 闭包进阶
- 7.7.1 Fn闭包
- 7.7.2 FnMut闭包
- 7.7.3 FnOnce闭包
- 7.8 结构体、枚举和特征中的常量
- 7.9 模块、路径和导入
- 7.9.1 导入
- 7.9.2 再次导出
- 7.9.3 隐私性
- 7.10 高级匹配模式和守护
- 7.10.1 匹配守护
- 7.10.2 高级let构造
- 7.11 强制类型转换
- 7.12 类型与内存
- 7.12.1 内存对齐
- 7.12.2 std::mem模块
- 7.13 使用serde进行序列化和反序列化
- 7.14 小结
- 第8章 并发
- 8.1 程序执行模型
- 8.2 并发
- 8.2.1 并发方法
- 8.2.2 缺陷
- 8.3 Rust中的并发
- 8.3.1 线程基础
- 8.3.2 自定义线程
- 8.3.3 访问线程中的数据
- 8.4 线程的并发模型
- 8.4.1 状态共享模型
- 8.4.2 互斥
- 8.4.3 通过Arc和Mutex实现共享可变性
- 8.4.4 通过消息传递进行通信
- 8.5 Rust中的线程安全
- 8.5.1 什么是线程安全
- 8.5.2 线程安全的特征
- 8.5.3 Send
- 8.5.4 Sync
- 8.6 使用actor模型实现并发
- 8.7 其他程序库
- 8.8 小结
- 第9章 宏与元编程
- 9.1 什么是元编程?
- 9.2 Rust宏的应用场景
- 9.3 Rust中的宏及其类型
- 宏的类型
- 9.4 使用macro_rules!创建宏
- 9.5 标准库中的内置宏
- 9.6 macro_rules!宏的标记类型
- 9.7 宏中的重复
- 9.8 宏的高级应用——为HashMap的初始化编写DSL
- 9.9 宏用例——编写测试
- 9.10 练习
- 9.11 过程宏
- 9.12 派生宏
- 9.13 调试宏程序
- 9.14 常用的过程宏软件包
- 9.15 小结
- 第10章 不安全的Rust和外部函数接口
- 10.1 安全与不安全
- 10.1.1 不安全的函数和代码块
- 10.1.2 不安全的特征和实现
- 10.2 在Rust中调用C代码
- 10.3 通过C语言调用Rust代码
- 10.4 在Rust使用外部C/C++程序库
- 10.5 使用PyO3构造原生Python扩展
- 10.6 在Rust中为Node.js创建原生扩展
- 10.7 小结
- 第11章 日志
- 11.1 日志记录及其重要性
- 11.2 日志记录框架的需求
- 11.3 日志记录框架及其特性
- 11.4 日志记录方法
- 11.4.1 非结构化日志记录
- 11.4.2 结构化日志记录
- 11.5 Rust中的日志记录
- 11.5.1 log——为Rust日志记录提供外观
- 11.5.2 env_logger
- 11.5.3 log4rs
- 11.5.4 使用slog进行结构化日志记录
- 11.6 小结
- 第12章 Rust与网络编程
- 12.1 网络编程简介
- 12.2 同步网络I/O
- 构建同步Redis服务器
- 12.3 异步网络I/O
- 12.3.1 Rust中的异步抽象
- 12.3.2 构建异步的Redis服务器
- 12.4 小结
- 第13章 用Rust构建Web应用程序
- 13.1 Rust中的Web应用
- 13.2 用hyper进行HTTP通信
- 13.2.1 hyper服务器端API——构建一个短网址服务
- 13.2.2 作为客户端的hyper——构建一个URL短网址客户端
- 13.2.3 Web框架
- 13.3 actix-web基础知识
- 13.4 使用actix-web构建一个书签API
- 13.5 小结
- 第14章 Rust与数据库
- 14.1 数据持久性的重要性
- 14.2 SQLite
- 14.3 PostgreSQL
- 14.4 r2d2连接池
- 14.5 Postgres和diesel ORM
- 14.6 小结
- 第15章 Rust与WebAssembly
- 15.1 什么是WebAssmbly
- 15.2 WebAssembly的设计目标
- 15.3 WebAssembly入门
- 15.3.1 在线尝试
- 15.3.2 生成WebAssembly的方法
- 15.4 Rust和WebAssembly
- 15.4.1 wasm-bindgen
- 15.4.2 其他WebAssembly项目
- 15.5 小结
- 第16章 Rust与桌面应用
- 16.1 GUI开发简介
- 16.2 GTK+框架
- 16.3 通过gtk-rs构建一个新闻类桌面应用程序
- 16.4 练习
- 16.5 其他新兴的UI框架
- 16.6 小结
- 第17章 调试
- 17.1 调试简介
- 17.1.1 调试器基础
- 17.1.2 调试的先决条件
- 17.1.3 配置GDB
- 17.1.4 一个示例程序——buggie
- 17.1.5 GDB基础知识
- 17.1.6 在Visual Studio Code中集成GDB
- 17.2 rr调试器简介
- 17.3 小结
展开全部
出版方
人民邮电出版社
人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。