书库技术与未来Rust 程序设计语言 简体中文版
书籍封面

Rust 程序设计语言 简体中文版

作者 Steve Klabnik 和 Carol Nichols 以及 Rust 中文社区
20.0 分钟

摘要

Rust程序设计语言 目录总结

  • 本书为Rust语言的入门书籍,旨在帮助读者编写更快、更可靠的软件。
  • 通过学习本书,读者可以提升Rust知识,同时提升作为程序员的整体理解与自信。
  • 通过探索变量、数据类型、函数、所有权、并发等关键概念,读者将能够构建实用的应用程序,并掌握高效的编程技巧。

核心内容:

1. 入门指南

  • 介绍Rust的安装过程,包括在Linux、macOS和Windows上使用rustup进行安装的方法。
  • 提供编写并运行"Hello, World!"程序的步骤,帮助读者验证Rust是否安装成功。
  • 解释如何使用Cargo创建项目,构建和运行Cargo项目,以及使用cargo check检查错误。
  • 详细解释:Rust安装的步骤和细节。
  • 详细解释:创建Rust程序的步骤和文件扩展名要求。
  • 详细解释:通过Cargo构建和运行Rust项目的方法。

2. 猜数字游戏

  • 指导读者创建一个猜数字游戏,从获取用户输入开始,生成一个秘密数字,并比较用户的猜测。
  • 学习如何使用crate来增加功能,例如使用rand crate生成随机数。
  • 解释如何使用match表达式比较猜测的数字和秘密数字,并根据比较结果提供反馈。
  • 详细解释:猜数字游戏的准备步骤和Cargo.toml配置。
  • 详细解释:Rust中变量的概念和使用方法,包括可变变量。
  • 详细解释:如何使用外部crate,并更新crate版本。

3. 常见编程概念

  • 变量与可变性:解释Rust中变量的默认不可变性,以及如何使用mut关键字声明可变变量。
  • 数据类型:介绍Rust中的标量类型(整型、浮点型、布尔类型和字符类型)和复合类型(元组和数组)。
  • 函数:讨论Rust中函数的定义、参数、语句和表达式,以及如何编写具有返回值的函数。
  • 注释:说明Rust中单行注释和多行注释的语法。
  • 控制流:介绍Rust中的if表达式和循环结构(loop、while和for)。
  • 详细解释:Rust中常量的定义和使用场景。
  • 详细解释:Rust中整型的长度和类型。
  • 详细解释:Rust中表达式和语句的区别。

4. 认识所有权

  • 什么是所有权:解释Rust的所有权规则,包括每个值都有一个所有者,值在任一时刻只有一个所有者,以及当所有者离开作用域时,这个值将被丢弃。
  • 引用与借用:介绍Rust中的引用(reference)和借用(borrowing),以及如何使用引用来访问数据而无需获取所有权。
  • Slice类型:讨论Rust中的Slice类型,它允许引用集合中一段连续的元素序列,而不用引用整个集合。
  • 详细解释:Rust中栈和堆的概念和区别。
  • 详细解释:Rust中变量作用域的开始和结束。
  • 详细解释:Rust中引用和所有权的相互作用。

5. 使用结构体组织相关联的数据

  • 结构体的定义和实例化:介绍如何定义和实例化结构体,并使用变量储存值。
  • 结构体示例程序:学习使用变量储存值来创建一个结构体示例程序,好让用户来猜。
  • 方法语法:如何使用结构体关联函数,包括智能指针当作常规引用处理,运行清理代码。
  • 详细解释:结构体中字段命名惯例。
  • 详细解释:关联函数中的Rust风格。

6. 枚举和模式匹配

  • 枚举的定义:介绍如何定义枚举类型,并解释枚举的成员。
  • match 控制流结构:介绍Rust中的match控制流结构,它允许将一个值与一系列模式相比较,并根据相匹配的模式执行相应代码。
  • if let 简洁控制流:介绍Rust中的if let控制流结构,它允许以一种不那么冗长的方式结合if和let,来处理只匹配一个模式的值而忽略其他模式的情况。
  • 详细解释:Rust中枚举的定义和使用方法。
  • 详细解释:如何使用Result类型来处理潜在的错误。

7. 使用包、 Crate 和模块管理不断增长的项目

  • 包和 Crate:解释Rust中包(Packages)和Crate(模块的树形结构)的概念。
  • 定义模块来控制作用域与私有性:介绍如何定义模块来控制作用域与私有性。
  • 引用模块项目的路径:说明如何引用模块项目的路径。
  • 使用 use 关键字将路径引入作用域:学习如何使用use关键字将路径引入作用域。
  • 将模块拆分成多个文件:介绍如何将模块拆分成多个文件。
  • 详细解释:crate根文件的作用。
  • 详细解释:使用pub关键字暴露路径。

8. 常见集合

  • 使用 Vector 储存列表:介绍如何使用Vector储存列表。
  • 使用字符串储存 UTF-8 编码的文本:学习如何使用字符串储存 UTF-8 编码的文本。
  • 使用 Hash Map 储存键值对:介绍如何使用 Hash Map 储存键值对。
  • 详细解释:rust字符串类型的存储。

9. 错误处理

  • 用 panic! 处理不可恢复的错误:解释如何使用panic!处理不可恢复的错误。
  • 用 Result 处理可恢复的错误:介绍如何使用Result处理可恢复的错误。
  • 要不要 panic!:讨论在不同情况下使用panic!和Result的注意事项。
  • 详细解释:error显示和定位技巧。

10. 泛型、 Trait 和生命周期

  • 泛型数据类型:介绍泛型数据类型的概念,以及如何在函数、结构体和枚举中使用泛型。
  • Trait :定义共同行为:学习如何使用Trait定义共同行为。
  • 生命周期确保引用有效:讨论生命周期确保引用有效。
  • 详细解释:对泛型进行类型约束。

11. 编写自动化测试

  • 如何编写测试:说明如何编写测试函数,并使用assert!宏来检查结果。
  • 控制测试如何运行:介绍如何控制测试的运行方式,例如并行或连续运行测试,显示函数输出,以及通过指定名字来运行部分测试。
  • 测试的组织结构:讨论测试的组织结构,包括单元测试和集成测试。
  • 详细解释:测试输出。

12. 一个 I/O 项目:构建命令行程序

  • 接受命令行参数:学习如何接受命令行参数。
  • 读取文件:介绍如何读取文件。
  • 重构以改进模块化与错误处理:讨论如何重构以改进模块化与错误处理。
  • 采用测试驱动开发完善库的功能:介绍如何采用测试驱动开发完善库的功能。
  • 处理环境变量:学习如何处理环境变量。
  • 将错误信息输出到标准错误而不是标准输出:介绍如何将错误信息输出到标准错误而不是标准输出。

13. Rust 中的函数式语言功能:迭代器与闭包

  • 闭包:可以捕获其环境的匿名函数:介绍闭包的概念,它是一种可以捕获其环境的匿名函数。
  • 使用迭代器处理元素序列:学习如何使用迭代器处理元素序列。
  • 改进之前的 I/O 项目:通过实际案例改进之前的I/O项目。
  • 性能比较:循环对迭代器:比较循环和迭代器的性能。

14. 更多关于 Cargo 和 Crates.io 的内容

  • 采用发布配置自定义构建:介绍如何采用发布配置自定义构建。
  • 将 crate 发布到 Crates.io:学习如何将 crate 发布到 Crates.io。
  • Cargo 工作空间:介绍Cargo工作空间的概念。
  • 使用 cargo install 安装二进制文件:说明如何使用 cargo install安装二进制文件。
  • Cargo 自定义扩展命令:介绍如何使用Cargo自定义扩展命令。

15. 智能指针

  • 使用 Box 指向堆上数据:介绍如何使用 Box 指向堆上数据。
  • 使用 Deref Trait 将智能指针当作常规引用处理:学习如何使用 Deref Trait 将智能指针当作常规引用处理。
  • 使用 Drop Trait 运行清理代码:介绍如何使用 Drop Trait 运行清理代码。
  • Rc 引用计数智能指针:学习Rc引用计数智能指针。
  • RefCell 与内部可变性模式:说明RefCell与内部可变性模式。
  • 引用循环会导致内存泄漏:解释引用循环会导致内存泄漏。

16. 无畏并发

  • 使用线程同时地运行代码:介绍如何使用线程同时地运行代码。
  • 使用消息传递在线程间通信:学习如何使用消息传递在线程间通信。
  • 共享状态并发:介绍共享状态并发。
  • 使用 Sync 与 Send Traits 的可扩展并发:学习如何使用 Sync 与 Send Traits 的可扩展并发。

17. Async 和 await

  • Futures 和 async 语法:介绍Futures和async语法。
  • 并发与 async:学习并发与async。
  • 使用任意数量的 futures:介绍如何使用任意数量的 futures。
  • 流( Streams ):学习如何使用流( Streams )。
  • 深入理解 async 相关的 traits:对async相关的 traits进行理解。
  • Futures ,任务( tasks )和线程( threads ):探索Futures ,任务( tasks )和线程( threads )。

18. Rust 的面向对象编程特性

  • 面向对象语言的特点:介绍面向对象语言的特点。
  • 顾及不同类型值的 trait 对象:讨论顾及不同类型值的 trait 对象。
  • 面向对象设计模式的实现:学习面向对象设计模式的实现。

19. 模式与模式匹配

  • 所有可能会用到模式的位置:介绍所有可能会用到模式的位置。
  • Refutability (可反驳性) : 模式是否会匹配失效:讨论Refutability (可反驳性) : 模式是否会匹配失效。
  • 模式语法:介绍Rust中模式语法。

20. 高级特征

  • 不安全的 Rust:介绍不安全的 Rust。
  • 高级 trait:学习高级 trait。
  • 高级类型:介绍高级类型。
  • 高级函数与闭包:学习高级函数与闭包。
  • 宏:介绍Rust中宏。

21. 最后的项目:构建多线程 web server

  • 建立单线程 web server:介绍如何建立单线程 web server。
  • 将单线程 server 变为多线程 server:学习如何将单线程 server 变为多线程 server。
  • 优雅停机与清理:介绍优雅停机与清理。

问答

Q: Rust相比其他编程语言有哪些优势?

A: Rust相比其他编程语言的优势在于它能够消除数十年来程序员习以为常的取舍,让安全和高效、速度和易读易用可以兼得。

Q: 如何阅读本书才能达到最好的效果?

A: 本书大体上假设您按从头到尾的顺序阅读。后面的章节建立在前面章节概念的基础上。前面的章节可能不会深入介绍部分主题,而是留待后续章节重新讨论。请采取对你最有效的方式。

思维导图

目标读者

本书适合已经有其他编程语言经验,希望学习 Rust 语言的开发者、学生和系统工程师。本书假设读者已经熟悉基本的编程概念,并对程序设计有一定的了解。

作者背景

本书的英文原版作者为 Steve Klabnik 和 Carol Nichols,并由 Rust 社区补充完善。本简体中文译本由 Rust 中文社区翻译。

历史背景

Rust 语言的设计目标是消除数十年来程序员习以为常的取舍,让安全和高效、速度和易读易用可以兼得。Rust 试图挑战在编程语言设计中,高层的工程学与底层的控制往往是难以兼得的这一矛盾。

章节摘要

音频

Comming Soon...