logo资料库

Rust程序设计.pdf

第1页 / 共423页
第2页 / 共423页
第3页 / 共423页
第4页 / 共423页
第5页 / 共423页
第6页 / 共423页
第7页 / 共423页
第8页 / 共423页
资料共423页,剩余部分请下载后查看
Introduction
介绍
安装
Hello, World!
猜猜看教程
通用编程概念
变量与可变性
数据类型
函数如何工作
注释
控制流
认识所有权
什么是所有权
引用与借用
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 自定义扩展命令
智能指针
Box 在堆上存储数据,并且可确定大小
Deref Trait 允许通过引用访问数据
Drop Trait 运行清理代码
Rc 引用计数智能指针
RefCell 和内部可变性模式
引用循环和内存泄漏是安全的
无畏并发
线程
消息传递
共享状态
可扩展的并发:Sync和Send
Rust 是面向对象语言吗?
什么是面向对象?
为使用不同类型的值而设计的 trait 对象
面向对象设计模式的实现
模式用来匹配值的结构
所有可能会用到模式的位置
Refutability:何时模式可能会匹配失败
模式的全部语法
高级特征
不安全的 Rust
高级生命周期
高级 trait
高级类型
高级函数与闭包
最后的项目: 构建多线程 web server
单线程 web server
慢请求如何影响吞吐率
设计线程池接口
创建线程池并储存线程
使用通道向线程发送请求
Graceful Shutdown 与清理
附录
A - 关键字
B - 运算符与符号
C - 可导出的 trait
D - 宏
E - 本书翻译
F - 最新功能
入门指南 Introduction 介绍 安装 Hello, World! 猜猜看教程 通用编程概念 变量与可变性 数据类型 函数如何工作 注释 控制流 认识所有权 什么是所有权 引用与借用 Slices 使用结构体来组织相关联的数据 定义并实例化结构体 一个使用结构体的示例程序 方法语法 枚举与模式匹配 定义枚举 match 控制流运算符 if let 简洁控制流 基本 Rust 技能 模块 mod 与文件系统 使用 pub 控制可见性 在不同的模块中引用命名 通用集合类型 vector 字符串 目录 1 1.1 1.2 1.2.1 1.2.2 1.3 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.5 1.5.1 1.5.2 1.5.3 1.6 1.6.1 1.6.2 1.6.3 1.7 1.7.1 1.7.2 1.7.3 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.2.2
哈希 map 错误处理 panic! 与不可恢复的错误 Result 与可恢复的错误 panic! 还是不 panic! 泛型、trait 与生命周期 泛型数据类型 trait:定义共享的行为 生命周期与引用有效性 测试 编写测试 运行测试 测试的组织结构 一个 I/O 项目:构建命令行程序 接受命令行参数 读取文件 重构以改进模块化与错误处理 采用测试驱动开发完善库的功能 处理环境变量 将错误信息输出到标准错误而不是标准输出 Rust 编程思想 Rust 中的函数式语言功能:迭代器与闭包 闭包:可以捕获其环境的匿名函数 使用迭代器处理元素序列 改进之前的 I/O 项目 性能比较:循环对迭代器 更多关于 Cargo 和 Crates.io 的内容 采用发布配置自定义构建 将 crate 发布到 Crates.io Cargo 工作空间 使用 cargo install 从 Crates.io 安装二进制文件 Cargo 自定义扩展命令 智能指针 Box 在堆上存储数据,并且可确定大小 Deref Trait 允许通过引用访问数据 Drop Trait 运行清理代码 Rc 引用计数智能指针 2 2.2.3 2.3 2.3.1 2.3.2 2.3.3 2.4 2.4.1 2.4.2 2.4.3 2.5 2.5.1 2.5.2 2.5.3 2.6 2.6.1 2.6.2 2.6.3 2.6.4 2.6.5 2.6.6 3.1 3.1.1 3.1.2 3.1.3 3.1.4 3.2 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.3 3.3.1 3.3.2 3.3.3 3.3.4
RefCell 和内部可变性模式 引用循环和内存泄漏是安全的 无畏并发 线程 消息传递 共享状态 可扩展的并发:Sync和Send Rust 是面向对象语言吗? 什么是面向对象? 为使用不同类型的值而设计的 trait 对象 面向对象设计模式的实现 高级主题 模式用来匹配值的结构 所有可能会用到模式的位置 Refutability:何时模式可能会匹配失败 模式的全部语法 高级特征 不安全的 Rust 高级生命周期 高级 trait 高级类型 高级函数与闭包 最后的项目: 构建多线程 web server 单线程 web server 慢请求如何影响吞吐率 设计线程池接口 创建线程池并储存线程 使用通道向线程发送请求 Graceful Shutdown 与清理 附录 A - 关键字 B - 运算符与符号 C - 可导出的 trait D - 宏 E - 本书翻译 F - 最新功能 3 3.3.5 3.3.6 3.4 3.4.1 3.4.2 3.4.3 3.4.4 3.5 3.5.1 3.5.2 3.5.3 4.1 4.1.1 4.1.2 4.1.3 4.2 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.3 4.3.1 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 4.4 4.4.1 4.4.2 4.4.3 4.4.4 4.4.5 4.4.6
4
Rust 程序设计语言(第二版) 简体中文版 还在施工中... 5
介绍 ch01-00-introduction.md commit d06a6a181fd61704cbf7feb55bc61d518c6469f9 欢迎阅读 “Rust 程序设计语言”,一本介绍 Rust 的书。Rust 是一门着眼于安全、速度和并发的编程语言。其程序 设计兼顾底层语言的性能与控制,并不失高级语言强大的抽象能力。其特性适合那些有类 C 语言经验,正在寻找 更安全的替代品的开发者;同样适合有着类 Python 语言背景,寻求在不牺牲表现力的前提下,编写更高性能代码 的开发者。 Rust 编译时执行绝大部分的安全检查和内存管理决策,对运行时性能的影响微不足道。这使其在其他语言不擅长 的应用场景中得以大显身手:可预测时间和空间需求的程序,嵌入到其他语言中,以及编写如设备驱动和操作系统 这样的底层代码。Rust 也很擅长 web 程序:它驱动着 Rust 包登记网站(package registry site),crates.io!我 们由衷期待你使用 Rust 进行创作。 本书的目标读者至少应了解一门其它编程语言。阅读本书之后,你应该能自如的编写 Rust 程序。我们将通过短小 精干、前后呼应的例子来学习 Rust,并展示其多样功能的使用方法,同时了解它们幕后如何运行。 为本书做出贡献 本书是开源的。如果你发现任何错误,不要犹豫,在 GitHub 上发起 issue 或提交 pull request。请查看 CONTRIBUTING.md 获取更多信息。 译者注:本译本的 GitHub 仓库,同样欢迎 Issue 和 PR :) 6
安装 ch01-01-installation.md commit b6dcc87f2b811c88fc741c86cf6ed3976333acba 使用 Rust 的第一步是安装。你需要网络连接来执行本章的命令,因为将要从网上下载 Rust。 这里将会展示很多使用终端的命令,这些命令均以 $ 开头。不需要真的输入 $ ,在这里它们代表每行命令的起 始。网上有很多教程和例子遵循这种惯例: $ 代表以常规用户身份运行命令, # 代表需要用管理员身份运行命 令。没有以 $ (或 # )起始的行通常是之前命令的输出。 在 Linux 或 Mac 上安装 如果你使用 Linux 或 Mac,你需要做的全部就是打开一个终端并输入: $ curl https://sh.rustup.rs -sSf | sh 这会下载一个脚本并开始安装。可能会提示你输入密码,如果一切顺利,将会出现如下内容: Rust is installed now. Great! 当然,如果你不信任采用 curl URL | sh 来安装软件,请随意下载、检查和运行这个脚本。 此安装脚本自动将 Rust 加入系统 PATH 环境变量中,再次登陆时生效。如果你希望立刻(不重新登陆)就开始使 用 Rust,在 shell 中运行如下命令: $ source $HOME/.cargo/env 或者,在 ~/.bash_profile 文件中增加如下行: $ export PATH="$HOME/.cargo/bin:$PATH" 在 Windows 上安装 如果你使用 Windows,前往 https://rustup.rs,按说明下载 rustup-init.exe,运行并照其指示操作。 本书中其余 Windows 相关的命令,假设你使用 cmd 作为 shell。如果你使用其它 shell,也许可以执行与 Linux 和 Mac 用户相同的命令。如果不行,请查看该 shell 的文档。 自定义安装 无论出于何种理由,如果不愿意使用 rustup.rs,请查看 Rust 安装页面 获取其他选项。 更新 一旦安装了 Rust,更新到最新版本是很简单的。在 shell 中执行更新脚本: $ rustup update 7
卸载 卸载 Rust 与安装同样简单。在 shell 中执行卸载脚本: $ rustup self uninstall 故障排除(Troubleshooting) 安装完 Rust 后,打开 shell 并执行: $ rustc --version 应该能看到类似这样格式的版本号、提交哈希和提交日期,对应安装时的最新稳定版: rustc x.y.z (abcabcabc yyyy-mm-dd) 如果出现这些内容,Rust 就安装成功了! 恭喜入坑!(此处应该有掌声!) 如果在 Windows 中使用出现问题,检查 Rust(rustc,cargo 等)是否在 %PATH% 环境变量所包含的路径中。 如果还是不能解决,有许多地方可以求助。最简单的是 irc.mozilla.org 上的 #rust IRC 频道 ,可以使用 Mibbit 来访 问它。然后就能和其他 Rustacean(Rust 用户的称号,有自嘲意味)聊天并寻求帮助。其它给力的资源包括用户 论坛和 Stack Overflow。 本地文档 安装程序也自带一份文档的本地拷贝,可以离线阅读。运行 rustup doc 在浏览器中查看本地文档。 任何时候,如果你拿不准标准库中的类型或函数如何工作,请查看 API 文档! 8
分享到:
收藏