logo资料库

rust 程序设计.pdf

第1页 / 共609页
第2页 / 共609页
第3页 / 共609页
第4页 / 共609页
第5页 / 共609页
第6页 / 共609页
第7页 / 共609页
第8页 / 共609页
资料共609页,剩余部分请下载后查看
致谢
README
前言
介绍
入门指南
介绍
安装
Hello, World!
Hello, Cargo!
猜猜看游戏教程
通用编程概念
变量与可变性
数据类型
函数如何工作
注释
控制流
认识所有权
什么是所有权?
引用与借用
Slices
使用结构体来组织相关联的数据
定义并实例化结构体
一个使用结构体的示例程序
方法语法
枚举与模式匹配
定义枚举
match 控制流运算符
if let 简洁控制流
模块
mod 与文件系统
使用 pub 控制可见性
在不同的模块中引用命名
通用集合类型
vector
字符串
哈希 map
错误处理
panic! 与不可恢复的错误
Result 与可恢复的错误
panic! 还是不 panic!
泛型、trait 与生命周期
泛型数据类型
trait:定义共享的行为
生命周期与引用有效性
测试
编写测试
运行测试
测试的组织结构
一个 I/O 项目:构建命令行程序
接受命令行参数
读取文件
重构以改进模块化与错误处理
采用测试驱动开发完善库的功能
处理环境变量
将错误信息输出到标准错误而不是标准输出
Rust 中的函数式语言功能:迭代器与闭包
闭包:可以捕获其环境的匿名函数
使用迭代器处理元素序列
改进之前的 I/O 项目
性能比较:循环对迭代器
更多关于 Cargo 和 Crates.io 的内容
采用发布配置自定义构建
将 crate 发布到 Crates.io
Cargo 工作空间
使用 cargo install 从 Crates.io 安装二进制文件
Cargo 自定义扩展命令
智能指针
目 录 致谢 README 前言 介绍 入门指南 介绍 安装 Hello, World! Hello, Cargo! 猜猜看游戏教程 通用编程概念 变量与可变性 数据类型 函数如何工作 注释 控制流 认识所有权 什么是所有权? 引用与借用 Slices 使用结构体来组织相关联的数据 定义并实例化结构体 一个使用结构体的示例程序 方法语法 枚举与模式匹配 定义枚举 match 控制流运算符 if let 简洁控制流 模块 mod 与文件系统 使用 pub 控制可见性 在不同的模块中引用命名 通用集合类型 本文档使用 书栈(BookStack.CN) 构建 - 1 -
vector 字符串 哈希 map 错误处理 panic! 与不可恢复的错误 Result 与可恢复的错误 panic! 还是不 panic! 泛型、trait 与生命周期 泛型数据类型 trait:定义共享的行为 生命周期与引用有效性 测试 编写测试 运行测试 测试的组织结构 一个 I/O 项目:构建命令行程序 接受命令行参数 读取文件 重构以改进模块化与错误处理 采用测试驱动开发完善库的功能 处理环境变量 将错误信息输出到标准错误而不是标准输出 Rust 中的函数式语言功能:迭代器与闭包 闭包:可以捕获其环境的匿名函数 使用迭代器处理元素序列 改进之前的 I/O 项目 性能比较:循环对迭代器 更多关于 Cargo 和 Crates.io 的内容 采用发布配置自定义构建 将 crate 发布到 Crates.io Cargo 工作空间 使用 cargo install 从 Crates.io 安装二进制文件 Cargo 自定义扩展命令 智能指针 本文档使用 书栈(BookStack.CN) 构建 - 2 -
Box 指向堆上数据,并且可确定大小 通过 Deref trait 将智能指针当作常规引用处理 Drop Trait 运行清理代码 Rc 引用计数智能指针 RefCell 与内部可变性模式 引用循环与内存泄漏是安全的 无畏并发 线程 消息传递 共享状态 可扩展的并发:Sync 与 Send Rust 的面向对象编程特征 面向对象语言的特点 为使用不同类型的值而设计的 trait 对象 面向对象设计模式的实现 模式用来匹配值的结构 所有可能会用到模式的位置 Refutability:何时模式可能会匹配失败 模式的全部语法 高级特征 不安全的 Rust 高级生命周期 高级 trait 高级类型 高级函数与闭包 最后的项目: 构建多线程 web server 单线程 web server 将单线程 server 变为多线程 server 慢请求如何影响吞吐率 优雅停机与清理 设计线程池接口 创建线程池并储存线程 使用通道向线程发送请求 附录 本文档使用 书栈(BookStack.CN) 构建 - 3 -
A - 关键字 B - 运算符与符号 C - 可导出的 trait D - 宏 E - 本书翻译 F - 最新功能 G - Rust 是如何开发的与 “Nightly Rust” 本文档使用 书栈(BookStack.CN) 构建 - 4 -
致谢 致谢 当前文档 《Rust 程序设计语言(第二版) 简体中文版》 由 进击的皇虫 使用 书栈 (BookStack.CN) 进行构建,生成于 2018-04-27。 书栈(BookStack.CN) 仅提供文档编写、整理、归类等功能,以及对文档内容的生成和导出工 具。 文档内容由网友们编写和整理,书栈(BookStack.CN) 难以确认文档内容知识点是否错漏。如 果您在阅读文档获取知识的时候,发现文档内容有不恰当的地方,请向我们反馈,让我们共同携手, 将知识准确、高效且有效地传递给每一个人。 同时,如果您在日常生活、工作和学习中遇到有价值有营养的知识文档,欢迎分享到 书栈 (BookStack.CN) ,为知识的传承献上您的一份力量! 如果当前文档生成时间太久,请到 书栈(BookStack.CN) 获取最新的文档,以跟上知识更新换 代的步伐。 文档地址:http://www.bookstack.cn/books/trpl-zh-cn 书栈官网:http://www.bookstack.cn 书栈开源:https://github.com/TruthHun 分享,让知识传承更久远! 感谢知识的创造者,感谢知识的分享者,也感谢每一位阅读到此处的 读者,因为我们都将成为知识的传承者。 本文档使用 书栈(BookStack.CN) 构建 - 5 -
README README Rust 程序设计语言(第二版) 简体中文版 状态 社区资源 GitBook Rust 程序设计语言(第二版) 简体中文版 buildbuild passing passing 状态 还在施工中。大部分章节已经可以阅读。具体状态请参见官方 projects, Frozen 之后的内容应 该较为稳定。 每章翻译开头都带有官方链接和 commit hash,若发现与官方不一致,欢迎 Issue 或 PR :) 社区资源 Rust语言中文社区:https://rust.cc/ Rust 中文 Wiki:https://wiki.rust-china.org/ Rust编程语言社区主群:303838735 Rust 水群:253849562 GitBook 本翻译主要采用 mdBook 格式。同时支持 GitBook,但会缺失部分功能,如一些代码没有语法高 亮。 GitBook.com 地址:https://www.gitbook.com/book/kaisery/trpl-zh-cn/details 本文档使用 书栈(BookStack.CN) 构建 - 6 -
前言 前言 前言 前言 foreword.md commit 5e085bd1add34aec03416e891751552b439dde52 事物并非总是简单明了,Rust 程序设计语言的本质在于 授权(empowerment):无论你现在编写 的是何种代码,Rust 能授权你在更为广泛的编程领域走得更远,写出自信。 举例来说,“系统层面”(“systems-level”)处理内存管理、数据表示和并发的底层细节。这个编 程领域被视为神秘的传统,只为数年专注学习所挑选出的少数人所触及,也只有他们能避免其恶名昭 著的缺陷。即是谨慎的实践者,亦唯恐代码被利用、崩溃或损坏。 Rust 打破了这些障碍,其消除了旧的缺陷并提供了伴你一路同行的友好、精良的工具。想要 “深 入” 底层控制的程序员可以使用 Rust,无需冒着常见的崩溃或安全漏洞的风险,也无需学习时常改 变的工具链的最新知识。其语言本身更是被设计为自然而然的引导你编写出在运行速度和内存使用上 都十分高效的可靠代码。 已经在从事编写底层代码的程序员可以使用 Rust 来提升抱负。例如,在 Rust 中引入并行是相对 较为低风险的操作:编译器会为你捕获经典的错误。同时你可以自信的采取更为激进的优化,而不会 意外引入崩溃或漏洞。 另一方面 Rust 并不局限于底层系统编程。其表现力与工程学足以愉快的编写 CLI 应用、web server 和很多其他类型的代码 —— 在本书之后你会找到所有这些场景的简单示例。使用 Rust 你 学习的技能可以从一个领域延伸到另一个领域;你可以学习 Rust 来编写 web 应用,接着将同样的 技能应用到你的 Raspberry Pi 上。 本书全面拥抱 Rust 授权于用户的潜力。其内容平易近人,致力于帮助你不仅仅提升 Rust 的知 识,并且提升你作为程序员整体的理解与自信。那么让我们准备好深入学习 Rust吧(打开新世界的 大门 :)) —— 欢迎加入 Rust 社区! — Nicholas Matsakis 和 Aaron Turon 本文档使用 书栈(BookStack.CN) 构建 - 7 -
介绍 介绍 介绍 谁会使用 Rust 开发者团队 学生 公司 开源开发者 重视速度和稳定性的开发者 谁会阅读本书 如何阅读本书 源代码 介绍 ch00-00-introduction.md commit acc5ee25138531b030c6c4844de2b7066959021d 欢迎阅读 “Rust 程序设计语言”,一本介绍 Rust 的书。 Rust 是一门帮助你编写更快、更可靠软件的编程语言。高层工程学与底层控制在其他编程语言设计 中往往是相互矛盾的;通过平很强大的技术能力与优秀的开发体验,Rust 提供了控制底层细节(比 如内存使用)的选择,并免受通常随之而来的所有烦恼。 谁会使用 Rust Rust 因多种原因适用于很多开发者。让我们讨论一些最为重要的群体。 开发者团队 Rust 被证明是可用于大型的拥有不同层次系统编程水平开发者团队的生产力工具。底层代码易于出 现大量隐晦的 bug,对于其他编程语言这只能通过广泛的测试和有经验开发者细心的代码评审才能加 以捕获。在 Rust 中,编译器充当了守门员的角色,它拒绝编译存在这类难以捕获 bug 的代码,包 括并发 bug。通过与编译器合作,团队可以利用更多的时间专注于程序逻辑而不是追踪 bug。 Rust 也带来了用于系统编程世界的现代化开发工具: Cargo,内置的依赖管理器和构建工具,它可以毫无痛苦的增加、编译和管理依赖,并使其在整 个 Rust 生态系统中保持一致。 本文档使用 书栈(BookStack.CN) 构建 - 8 -
分享到:
收藏