Statistics
18
Views
0
Downloads
0
Donations
Uploader

高宏飞

Shared on 2025-12-19
Support
Share

Author[美] 吉姆•布兰迪(Jim Blandy) 贾森•奥伦多夫(Jason Orendorff) 莉奥诺拉• F. S. 廷德尔(Leonora F. S. Tindall) [Tindall), 吉姆•布兰迪(Jim Blandy) 贾森•奥伦多夫(Jason Orendorff) 莉奥诺拉• F. S. 廷德尔(Leonora F. S.]

No description

Tags
No tags
ISBN: 7115621810
Publisher: 人民邮电出版社
Publish Year: 2023
Language: 英文
File Format: PDF
File Size: 8.1 MB
Support Statistics
¥.00 · 0times
Text Preview (First 20 pages)
Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

(This page has no text content)
版权信息 书名:Rust 程序设计(第2版) 作者:[美] 吉姆•布兰迪(Jim Blandy) 贾森•奥伦多夫(Jason Orendorff) 莉奥诺拉• F. S. 廷德尔(Leonora F. S. Tindall) 译者:汪志成(@雪狼) ISBN:978-7-115-62181-8 本书由北京图灵文化发展有限公司发行数字版。版权所有,侵权必 究。 您购买的图灵电子书仅供您个人使用,未经授权,不得以任何方式复 制和传播本书内容。 我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产 权。 如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该 帐号等维权措施,并可能追究法律责任。  
版权声明 O'Reilly Media, Inc.介绍 专家推荐 译者序 致谢 前言 读者对象 写作初衷 浏览本书 排版约定 使用代码示例 联系我们 致谢 中文版审读致谢 第 1 章 系统程序员也能享受美好 1.1 Rust 为你负重前行 1.2 高效并行编程 1.3 性能毫不妥协 1.4 协作无边无界 第 2 章 Rust 导览 2.1 rustup 与 Cargo 2.2 Rust 函数 2.3 编写与运行单元测试 2.4 处理命令行参数 2.5 搭建 Web 服务器 2.6 并发 2.6.1 什么是曼德博集 2.6.2 解析并配对命令行参数
2.6.3 从像素到复数的映射 2.6.4 绘制曼德博集 2.6.5 写入图像文件 2.6.6 并发版曼德博程序 2.6.7 运行曼德博绘图器 2.6.8 大“安”无形 2.7 文件系统与命令行工具 2.7.1 命令行界面 2.7.2 读写文件 2.7.3 查找并替换 第 3 章 基本数据类型 3.1 固定宽度的数值类型 3.1.1 整型 3.1.2 检查算法、回绕算法、饱和算法和溢出算法 3.1.3 浮点类型 3.2 布尔类型 3.3 字符 3.4 元组 3.5 指针类型 3.5.1 引用 3.5.2 Box 3.5.3 裸指针 3.6 数组、向量和切片 3.6.1 数组 3.6.2 向量 3.6.3 切片 3.7 字符串类型 3.7.1 字符串字面量
3.7.2 字节串 3.7.3 内存中的字符串 3.7.4 String 3.7.5 使用字符串 3.7.6 其他类似字符串的类型 3.8 类型别名 3.9 前路展望 第 4 章 所有权与移动 4.1 所有权 4.2 移动 4.2.1 更多移动类操作 4.2.2 移动与控制流 4.2.3 移动与索引内容 4.3 Copy 类型:关于移动的例外情况 4.4 Rc 与 Arc:共享所有权 第 5 章 引用 5.1 对值的引用 5.2 使用引用 5.2.1 Rust 引用与 C++ 引用 5.2.2 对引用变量赋值 5.2.3 对引用进行引用 5.2.4 比较引用 5.2.5 引用永不为空 5.2.6 借用任意表达式结果值的引用 5.2.7 对切片和特型对象的引用 5.3 引用安全 5.3.1 借用局部变量 5.3.2 将引用作为函数参数 1
5.3.3 把引用传给函数 5.3.4 返回引用 5.3.5 包含引用的结构体 5.3.6 不同的生命周期参数 5.3.7 省略生命周期参数 5.4 共享与可变 5.5 应对复杂对象关系 第 6 章 表达式 6.1 表达式语言 6.2 优先级与结合性 6.3 块与分号 6.4 声明 6.5 if 与 match 6.5.1 if let 6.5.2 循环 6.6 循环中的控制流 6.7 return 表达式 6.8 为什么 Rust 中会有 loop 6.9 函数与方法调用 6.10 字段与元素 6.11 引用运算符 6.12 算术运算符、按位运算符、比较运算符和逻辑运算符 6.13 赋值 6.14 类型转换 6.15 闭包 6.16 前路展望 第 7 章 错误处理 7.1 panic
7.1.1 展开调用栈 7.1.2 中止 7.2 Result 7.2.1 捕获错误 7.2.2 Result 类型别名 7.2.3 打印错误 7.2.4 传播错误 7.2.5 处理多种 Error 类型 7.2.6 处理“不可能发生”的错误 7.2.7 忽略错误 7.2.8 处理 main() 中的错误 7.2.9 声明自定义错误类型 7.2.10 为什么是 Result 第 8 章 crate 与模块 8.1 crate 8.1.1 版本 8.1.2 创建配置文件 8.2 模块 8.2.1 嵌套模块 8.2.2 单独文件中的模块 8.2.3 路径与导入 8.2.4 标准库预导入 8.2.5 公开 use 声明 8.2.6 公开结构体字段 8.2.7 静态变量与常量 8.3 将程序变成库 8.4 src/bin 目录 8.5 属性
8.6 测试与文档 8.6.1 集成测试 8.6.2 文档 8.6.3 文档测试 8.7 指定依赖项 8.7.1 版本 8.7.2 Cargo.lock 8.8 将 crate 发布到 crates.io 8.9 工作空间 8.10 更多好资源 第 9 章 结构体 9.1 具名字段型结构体 9.2 元组型结构体 9.3 单元型结构体 9.4 结构体布局 9.5 用 impl 定义方法 9.5.1 以 Box、Rc 或 Arc 形式传入 self 9.5.2 类型关联函数 9.6 关联常量 9.7 泛型结构体 9.8 带生命周期参数的泛型结构体 9.9 带常量参数的泛型结构体 9.10 让结构体类型派生自某些公共特型 9.11 内部可变性 第 10 章 枚举与模式 10.1 枚举 10.1.1 带数据的枚举 10.1.2 内存中的枚举
10.1.3 用枚举表示富数据结构 10.1.4 泛型枚举 10.2 模式 10.2.1 模式中的字面量、变量和通配符 10.2.2 元组型模式与结构体型模式 10.2.3 数组型模式与切片型模式 10.2.4 引用型模式 10.2.5 匹配守卫 10.2.6 匹配多种可能性 10.2.7 使用@模式绑定 10.2.8 模式能用在哪里 10.2.9 填充二叉树 10.3 大局观 第 11 章 特型与泛型 11.1 使用特型 11.1.1 特型对象 11.1.2 泛型函数与类型参数 11.1.3 使用哪一个 11.2 定义与实现特型 11.2.1 默认方法 11.2.2 特型与其他人的类型 11.2.3 特型中的 Self 11.2.4 子特型 11.2.5 类型关联函数 11.3 完全限定的方法调用 11.4 定义类型之间关系的特型 11.4.1 关联类型(或迭代器的工作原理) 11.4.2 泛型特型(或运算符重载的工作原理)
11.4.3 impl Trait 11.4.4 关联常量 11.5 逆向工程求限界 11.6 以特型为基础 第 12 章 运算符重载 12.1 算术运算符与按位运算符 12.1.1 一元运算符 12.1.2 二元运算符 12.1.3 复合赋值运算符 12.2 相等性比较 12.3 有序比较 12.4 Index 与 IndexMut 12.5 其他运算符 第 13 章 实用工具特型 13.1 Drop 13.2 Sized 13.3 Clone 13.4 Copy 13.5 Deref 与 DerefMut 13.6 Default 13.7 AsRef 与 AsMut 13.8 Borrow 与 BorrowMut 13.9 From 与 Into 13.10 TryFrom 与 TryInto 13.11 ToOwned 13.12 Borrow 与 ToOwned 的实际运用:谦卑 的 Cow 第 14 章 闭包 2
14.1 捕获变量 14.1.1 借用值的闭包 14.1.2 “窃取”值的闭包 14.2 函数与闭包的类型 14.3 闭包性能 14.4 闭包与安全 14.4.1 “杀死”闭包 14.4.2 FnOnce 14.4.3 FnMut 14.4.4 对闭包的 Copy 与 Clone 14.5 回调 14.6 高效地使用闭包 第 15 章 迭代器 15.1 Iterator 特型与 IntoIterator 特型 15.2 创建迭代器 15.2.1 iter 方法与 iter_mut 方法 15.2.2 IntoIterator 的实现 15.2.3 from_fn 与 successors 15.2.4 drain 方法 15.2.5 其他迭代器源 15.3 迭代器适配器 15.3.1 map 与 filter 15.3.2 filter_map 与 flat_map 15.3.3 flatten 15.3.4 take 与 take_while 15.3.5 skip 与 skip_while 15.3.6 peekable
15.3.7 fuse 15.3.8 可逆迭代器与 rev 15.3.9 inspect 15.3.10 chain 15.3.11 enumerate 15.3.12 zip 15.3.13 by_ref 15.3.14 cloned 与 copied 15.3.15 cycle 15.4 消耗迭代器 15.4.1 简单累加:count、sum 和 product 15.4.2 min 与 max 15.4.3 max_by 与 min_by 15.4.4 max_by_key 与 min_by_key 15.4.5 对条目序列进行比较 15.4.6 any 与 all 15.4.7 position、rposition 和 ExactSizeIterator 15.4.8 fold 与 rfold 15.4.9 try_fold 与 try_rfold 15.4.10 nth 与 nth_back 15.4.11 last 15.4.12 find、rfind 和 find_map 15.4.13 构建集合:collect 与 FromIterator 15.4.14 Extend 特型 15.4.15 partition 15.4.16 for_each 与 try_for_each
15.5 实现自己的迭代器 第 16 章 集合 16.1 概述 16.2 Vec<T> 16.2.1 访问元素 16.2.2 迭代 16.2.3 扩大向量与收缩向量 16.2.4 联结 16.2.5 拆分 16.2.6 交换 16.2.7 填充 16.2.8 排序与搜索 16.2.9 比较切片 16.2.10 随机元素 16.2.11 Rust 中不存在失效型错误 16.3 VecDeque<T> 16.4 BinaryHeap<T> 16.5 HashMap<K, V> 与 BTreeMap<K, V> 16.5.1 条目 16.5.2 对 Map 进行迭代 16.6 HashSet<T> 与 BTreeSet<T> 16.6.1 对 Set 进行迭代 16.6.2 当相等的值不完全相同时 16.6.3 针对整个 Set 的运算 16.7 哈希 16.8 使用自定义哈希算法 16.9 在标准集合之外 第 17 章 字符串与文本
17.1 一些 Unicode 背景知识 17.1.1 ASCII、Latin-1 和 Unicode 17.1.2 UTF-8 编码 17.1.3 文本方向性 17.2 字符(char) 17.2.1 字符分类 17.2.2 处理数字 17.2.3 字符大小写转换 17.2.4 与整数之间的转换 17.3 String 与 str 17.3.1 创建字符串值 17.3.2 简单探查 17.3.3 追加文本与插入文本 17.3.4 移除文本与替换文本 17.3.5 搜索与迭代的约定 17.3.6 搜索文本的模式 17.3.7 搜索与替换 17.3.8 遍历文本 17.3.9 修剪 17.3.10 字符串的大小写转换 17.3.11 从字符串中解析出其他类型 17.3.12 将其他类型转换为字符串 17.3.13 借用其他类似文本的类型 17.3.14 以 UTF-8 格式访问文本 17.3.15 从 UTF-8 数据生成文本 17.3.16 推迟分配 17.3.17 把字符串当作泛型集合 17.4 格式化各种值
17.4.1 格式化文本值 17.4.2 格式化数值 17.4.3 格式化其他类型 17.4.4 格式化值以进行调试 17.4.5 格式化指针以进行调试 17.4.6 按索引或名称引用参数 17.4.7 动态宽度与动态精度 17.4.8 格式化自己的类型 17.4.9 在自己的代码中使用格式化语言 17.5 正则表达式 17.5.1 Regex 的基本用法 17.5.2 惰性构建正则表达式值 17.6 规范化 17.6.1 规范化形式 17.6.2 unicode-normalization crate 第 18 章 输入与输出 18.1 读取器与写入器 18.1.1 读取器 18.1.2 缓冲读取器 18.1.3 读取行 18.1.4 收集行 18.1.5 写入器 18.1.6 文件 18.1.7 寻址 18.1.8 其他读取器与写入器类型 18.1.9 二进制数据、压缩和序列化 18.2 文件与目录 18.2.1 OsStr 与 Path
18.2.2 Path 与 PathBuf 的方法 18.2.3 访问文件系统的函数 18.2.4 读取目录 18.2.5 特定于平台的特性 18.3 网络 第 19 章 并发 19.1 分叉与合并并行 19.1.1 启动与联结 19.1.2 跨线程错误处理 19.1.3 跨线程共享不可变数据 19.1.4 rayon 19.1.5 重温曼德博集 19.2 通道 19.2.1 发送值 19.2.2 接收值 19.2.3 运行管道 19.2.4 通道的特性与性能 19.2.5 线程安全:Send 与 Sync 19.2.6 绝大多数迭代器能通过管道传给通道 19.2.7 除管道之外的用法 19.3 共享可变状态 19.3.1 什么是互斥锁 19.3.2 Mutex<T> 19.3.3 mut 与互斥锁 19.3.4 为什么互斥锁不是“银弹” 19.3.5 死锁 19.3.6 “中毒”的互斥锁 19.3.7 使用互斥锁的多消费者通道
19.3.8 读/写锁(RwLock<T>) 19.3.9 条件变量(Condvar) 19.3.10 原子化类型 19.3.11 全局变量 19.4 在 Rust 中编写并发代码的一点儿经验 第 20 章 异步编程 20.1 从同步到异步 20.1.1 Future 20.1.2 异步函数与 await 表达式 20.1.3 从同步代码调用异步函数:block_on 20.1.4 启动异步任务 20.1.5 异步块 20.1.6 从异步块构建异步函数 20.1.7 在线程池中启动异步任务 20.1.8 你的 Future 实现 Send 了吗 20.1.9 长时间运行的计算:yield_now 与 spawn_blocking 20.1.10 对几种异步设计进行比较 20.1.11 一个真正的异步 HTTP 客户端 20.2 异步客户端与服务器 20.2.1 Error 类型与 Result 类型 20.2.2 协议 20.2.3 获取用户输入:异步流 20.2.4 发送数据包 20.2.5 接收数据包:更多异步流 20.2.6 客户端的 main 函数 20.2.7 服务器的 main 函数 20.2.8 处理聊天连接:异步互斥锁
20.2.9 群组表:同步互斥锁 20.2.10 聊天组:tokio 的广播通道 20.3 原始 Future 与执行器:Future 什么时候值得再次轮 询 20.3.1 调用唤醒器:spawn_blocking 20.3.2 实现 block_on 20.4 固定(Pin) 20.4.1 Future 生命周期的两个阶段 20.4.2 固定指针 20.4.3 Unpin 特型 20.5 什么时候要用异步代码 第 21 章 宏 21.1 宏基础 21.1.1 宏展开的基础 21.1.2 意外后果 21.1.3 重复 21.2 内置宏 21.3 调试宏 21.4 构建 json! 宏 21.4.1 片段类型 21.4.2 宏中的递归 21.4.3 将特型与宏一起使用 21.4.4 作用域界定与卫生宏 21.4.5 导入宏和导出宏 21.5 在匹配过程中避免语法错误 21.6 超越 macro_rules! 第 22 章 不安全代码 22.1 不安全因素来自哪里 5
22.2 不安全块 22.3 示例:高效的 ASCII 字符串类型 22.4 不安全函数 22.5 不安全块还是不安全函数 22.6 未定义行为 22.7 不安全特型 22.8 裸指针 22.8.1 安全地解引用裸指针 22.8.2 示例:RefWithFlag 22.8.3 可空指针 22.8.4 类型大小与对齐方式 22.8.5 指针运算 22.8.6 移动入和移动出内存 22.8.7 示例:GapBuffer 22.8.8 不安全代码中的 panic 安全性 22.9 用联合体重新解释内存 22.10 匹配联合体 22.11 借用联合体 第 23 章 外部函数 23.1 寻找共同的数据表示 23.2 声明外部函数与变量 23.3 使用库中的函数 23.4 libgit2 的裸接口 23.5 libgit2 的安全接口 23.6 结论 作者介绍 封面介绍  
版权声明 Copyright © 2021 Jim Blandy, Leonora F. S. Tindall, Jason Orendorff. All rights reserved. Simplified Chinese edition, jointly published by O'Reilly Media, Inc. and Posts & Telecom Press, 2023. Authorized translation of the English edition, 2023 O'Reilly Media, Inc., the owner of all rights to publish and sell the same. All rights reserved including the rights of reproduction in whole or in part in any form. 英文原版由 O'Reilly Media, Inc. 出版,2021。 简体中文版由人民邮电出版社有限公司出版,2023。英文原版的翻译 得到 O'Reilly Media, Inc. 的授权。此简体中文版的出版和销售得 到出版权和销售权的所有者——O'Reilly Media, Inc. 的许可。 版权所有,未得书面许可,本书的任何部分和全部不得以任何形式重 制。  
The above is a preview of the first 20 pages. Register to read the complete e-book.