成功加入购物车
正版现货无笔记,无划线
[美]吉姆·布兰迪(Jim Blandy) 著; 李松峰 译 / 人民邮电出版社 / 2020-09 / 平装
售价 ¥ 30.00 2.2折
定价 ¥139.00
品相 九品
延迟发货说明
上书时间2025-04-09
卖家超过10天未登录
Rust程序设计
本书由两位经验丰富的系统程序员撰写,介绍了一种具有C和C++性能,同时安全且支持并发的新型系统编程语言Rust,解释了Rust如何在性能和安全性之间架起桥梁,以及我们如何用好这门语言。书中主要内容包括:Rust的基本数据类型,关于所有权、引用等概念,表达式、错误处理、包和模块、结构体、枚举与模式等基础知识,Rust语言的特型与泛型,闭包,迭代器,集合,等等。
吉姆・布兰迪(Jim Blandy)Mozilla软件工程师,拥有近40年编程经验和30年自由软件开发经验,是Subversion版本控制系统最初的设计者之一。
贾森・奥伦多夫(Jason Orendorff)资深软件工程师,拥有20余年软件开发经验,目前在为Mozilla Firefox Web浏览器开发JavaScript引擎。
【译者介绍】
360前端开发资深专家、前端TC委员、W3C AC代表,任职于“奇舞团”,也是360 Web字体服务“奇字库”作者。
前言 xv第 1 章 为什么是Rust 1第 2 章 Rust初体验 52.1 下载和安装Rust 52.2 一个简单的函数 72.3 编写和运行单元测试 92.4 处理命令行参数 92.5 一个简单的Web服务器 132.6 并发 192.6.1 到底什么是曼德布洛特集合 192.6.2 解析成对的命令行参数 232.6.3 像素到复数的映射 252.6.4 绘制集合 262.6.5 写出图像文件 272.6.6 并发的曼德布洛特程序 292.6.7 运行曼德布洛特绘图器 322.6.8 安全无形 34第 3 章 基本类型 353.1 机器类型 383.1.1 整数类型 383.1.2 浮点类型 403.1.3 布尔类型 423.1.4 字符类型 433.2 元组 443.3 指针类型 453.3.1 引用 463.3.2 Box 463.3.3 原始指针 463.4 数组、向量和切片 473.4.1 数组 473.4.2 向量 483.4.3 逐个元素地构建向量 513.4.4 切片 513.5 字符串类型 523.5.1 字符串字面量 523.5.2 字节字符串 533.5.3 字符串在内存中的表示 533.5.4 字符串 553.5.5 使用字符串 563.5.6 其他类似字符串的类型 563.6 更多类型 57第 4 章 所有权 584.1 所有权 594.2 转移 634.2.1 更多转移操作 684.2.2 转移与控制流 694.2.3 转移与索引内容 694.3 Copy类型:转移的例外 714.4 Rc和Arc:共享所有权 74第 5 章 引用 765.1 引用作为值 795.1.1 Rust引用与C++引用 795.1.2 给引用赋值 805.1.3 引用的引用 815.1.4 比较引用 815.1.5 引用永远不为空 825.1.6 借用对任意表达式的引用 825.1.7 对切片和特型对象的引用 835.2 引用安全 835.2.1 借用局部变量 835.2.2 接收引用作为参数 865.2.3 将引用作为参数传递 875.2.4 返回引用 885.2.5 结构体包含引用 895.2.6 不同的生命期参数 915.2.7 省略生命期参数 925.3 共享与修改 935.4 征服对象之海 99第 6 章 表达式 1016.1 表达式语言 1016.2 块与分号 1026.3 声明 1036.4 if与match 1056.5 循环 1076.6 return表达式 1096.7 为什么Rust有循环 1106.8 函数与方法调用 1116.9 字段与元素 1126.10 引用操作符 1136.11 算术、位、比较和逻辑操作符 1136.12 赋值 1146.13 类型转换 1146.14 闭包 1156.15 优先级与关联性 1166.16 展望 118第 7 章 错误处理 1197.1 诧异 1197.1.1 展开栈 1207.1.2 中止进程 1217.2 结果 1217.2.1 捕获错误 1217.2.2 结果类型别名 1237.2.3 打印错误 1237.2.4 传播错误 1247.2.5 处理多种错误类型 1257.2.6 处理“不会发生”的错误 1277.2.7 忽略错误 1287.2.8 在main()中处理错误 1287.2.9 声明自定义错误类型 1297.2.10 为什么是结果 130第 8 章 包和模块 1318.1 包 1318.2 模块 1348.2.1 把模块写在单独的文件中 1358.2.2 路径和导入 1368.2.3 标准前置模块 1388.2.4 特性项,Rust的基础 1398.3 将程序作为库发布 1418.4 src/bin目录 1428.5 属性 1438.6 测试和文档 1458.6.1 集成测试 1478.6.2 文档 1488.6.3 文档测试 1498.7 指定依赖 1528.7.1 版本 1528.7.2 Cargo.lock 1538.8 把包发布到crates.io 1548.9 工作空间 1568.10 还有惊喜 156第 9 章 结构体 1589.1 命名字段结构体 1589.2 类元组结构体 1619.3 类基元结构体 1619.4 结构体布局 1629.5 通过impl定义方法 1629.6 泛型结构体 1659.7 带生命期参数的结构体 1679.8 为结构体类型派生共有特型 1689.9 内部修改能力 168第 10 章 枚举与模式 17210.1 枚举 17310.1.1 包含数据的枚举 17510.1.2 枚举的内存布局 17610.1.3 使用枚举的富数据结构 17610.1.4 泛型枚举 17810.2 模式 18010.2.1 模式中的字面量、变量和通配符 18310.2.2 元组与结构体模式 18410.2.3 引用模式 18510.2.4 匹配多种可能性 18710.2.5 模式护具 18810.2.6 @模式 18810.2.7 在哪里使用模式 18910.2.8 填充二叉树 19010.3 设计的考量 191第 11 章 特型与泛型 19211.1 使用特型 19311.1.1 特型目标 19411.1.2 特型目标布局 19511.1.3 泛型函数 19611.1.4 使用哪一个 19911.2 定义和实现特型 20011.2.1 默认方法 20111.2.2 特型与其他人的类型 20211.2.3 特型中的Self 20411.2.4 子特型 20511.2.5 静态方法 20511.3 完全限定方法调用 20711.4 定义类型关系的特型 20811.4.1 关联类型(或迭代器工作原理) 20811.4.2 泛型特型(或操作符重载的原理) 21111.4.3 伴型特型(或rand::random()工作原理) 21211.5 逆向工程绑定 21311.6 小结 216第 12 章 操作符重载 21712.1 算术与位操作符 21812.1.1 一元操作符 22012.1.2 二元操作符 22112.1.3 复合赋值操作符 22112.2 相等测试 22212.3 顺序比较 22512.4 Index与IndexMut 22712.5 其他操作符 229第 13 章 实用特型 23013.1 Drop 23113.2 Sized 23313.3 Clone 23513.4 Copy 23613.5 Deref与DerefMut 23713.6 Default 23913.7 AsRef与AsMut 24113.8 Borrow与BorrowMut 24213.9 From与Into 24413.10 ToOwned 24513.11 Borrow与ToOwned实例:谦逊的奶牛(Cow) 246第 14 章 闭包 24814.1 捕获变量 24914.1.1 借用值的闭包 25014.1.2 盗用值的闭包 25014.2 函数与闭包类型 25214.3 闭包的性能 25414.4 闭包和安全 25514.4.1 杀值的闭包 25514.4.2 FnOnce 25614.4.3 FnMut 25714.5 回调 25914.6 有效使用闭包 261第 15 章 迭代器 26315.1 Iterator和IntoIterator特型 26415.2 创建迭代器 26515.2.1 iter和iter_mut方法 26515.2.2 IntoIterator实现 26615.2.3 drain方法 26815.2.4 其他迭代器源 26815.3 迭代器适配器 26915.3.1 map和filter 26915.3.2 filter_map和flat_map 27115.3.3 scan 27315.3.4 take和take_while 27415.3.5 skip和skip_while 27415.3.6 peekable 27515.3.7 fuse 27615.3.8 可逆迭代器与rev 27715.3.9 inspect 27815.3.10 chain 27815.3.11 enumerate 27915.3.12 zip 27915.3.13 by_ref 28015.3.14 cloned 28115.3.15 cycle 28115.4 消费迭代器 28215.4.1 简单累计:count、sum和product 28215.4.2 max和min 28315.4.3 max_by和min_by 28315.4.4 max_by_key和min_by_key 28315.4.5 比较项序列 28415.4.6 any和all 28515.4.7 position、rposition和ExactSizeIterator 28515.4.8 fold 28515.4.9 nth 28615.4.10 last 28615.4.11 find 28715.4.12 构建集合:collect和FromIterator 28715.4.13 Extend特型 28915.4.14 partition 28915.5 实现自己的迭代器 290第 16 章 集合 29416.1 概述 29516.2 Vec 29616.2.1 访问元素 29616.2.2 迭代 29816.2.3 增长和收缩向量 29816.2.4 连接 30016.2.5 拆分 30116.2.6 交换 30316.2.7 排序和搜索 30316.2.8 比较切片 30416.2.9 随机元素 30516.2.10 Rust排除无效错误 30516.3 VecDeque 30616.4 LinkedList 30716.5 BinaryHeap 30816.6 HashMap和BTreeMap 30916.6.1 条目 31116.6.2 映射迭代 31316.7 HashSet和BTreeSet 31316.7.1 集迭代 31416.7.2 相等的值不相同 31416.7.3 整集操作 31516.8 散列 31616.9 标准集合之外 318第 17 章 字符串与文本 31917.1 Unicode背景知识 31917.1.1 ASCII、Latin-1和Unicode 32017.1.2 UTF-8 32017.1.3 文本方向性 32217.2 字符(char) 32217.2.1 字符分类 32217.2.2 处理数字 32217.2.3 字符大小写转换 32317.2.4 与整数相互转换 32417.3 String与str 32417.3.1 创建字符串值 32517.3.2 简单检查 32517.3.3 追加和插入文本 32617.3.4 删除文本 32717.3.5 搜索与迭代的约定 32717.3.6 搜索文本的模式 32817.3.7 搜索与替换 32817.3.8 迭代文本 32917.3.9 修剪 33117.3.10 字符串大小写转换 33117.3.11 从字符串解析出其他类型 33117.3.12 将其他类型转换为字符串 33217.3.13 作为其他类文本类型借用 33317.3.14 访问UTF-8格式的文本 33317.3.15 从UTF-8数据产生文本 33417.3.16 阻止分配 33517.3.17 字符串作为泛型集合 33617.4 格式化值 33717.4.1 格式化文本值 33817.4.2 格式化数值 33917.4.3 格式化其他类型 34117.4.4 为调试格式化值 34117.4.5 为调试格式化指针 34217.4.6 通过索引或名字引用参数 34217.4.7 动态宽度与精度 34317.4.8 格式化自定义类型 34417.4.9 在你的代码中使用格式化语言 34517.5 正则表达式 34617.5.1 基本用法 34717.5.2 懒构建Regex值 34817.6 规范化 34917.6.1 规范化形式 35017.6.2 unicode-normalization包 351第 18 章 输入和输出 35218.1 读取器和写入器 35318.1.1 读取器 35418.1.2 缓冲读取器 35518.1.3 读取文本行 35618.1.4 收集行 35818.1.5 写入器 35918.1.6 文件 36018.1.7 搜寻 36018.1.8 其他读取器和写入器类型 36118.1.9 二进制数据、压缩与序列化 36218.2 文件与目录 36418.2.1 OsStr和Path 36418.2.2 Path和PathBuf的方法 36518.2.3 文件系统访问函数 36718.2.4 读取目录 36818.2.5 平台特定的特性 36918.3 网络编程 370第 19 章 并发 37319.1 并行分叉C合并 37419.1.1 产生及合并 37619.1.2 跨线程错误处理 37719.1.3 跨线程共享不可修改数据 37819.1.4 Rayon 38019.1.5 重温曼德布洛特集合 38219.2 通道 38319.2.1 发送值 38519.2.2 接收值 38719.2.3 运行管道 38819.2.4 通道特性与性能 39019.2.5 线程安全:Send与Sync 39119.2.6 将所有迭代器都接到通道上 39319.2.7 超越管道 39419.3 共享可修改状态 39519.3.1 什么是互斥量 39519.3.2 Mutex 39719.3.3 mut与Mutex 39819.3.4 互斥量的问题 39919.3.5 死锁 39919.3.6 中毒的互斥量 40019.3.7 使用互斥量的多消费者通道 40019.3.8 读/写锁(RwLock) 40119.3.9 条件变量(Condvar)40219.3.10 原子类型 40319.3.11 全局变量 40419.4 习惯编写Rust并发代码 406第 20 章 宏 40720.1 宏基础 40820.1.1 宏扩展基础 40920.1.2 意外结果 41020.1.3 重复 41120.2 内置宏 41320.3 调试宏 41420.4 json!宏 41520.4.1 片段类型 41620.4.2 在宏里使用递归 41920.4.3 在宏里使用特型 41920.4.4 作用域与自净宏 42120.4.5 导入和导出宏 42420.5 匹配时避免语法错误 42520.6 超越macro_rules! 426第 21 章 不安全代码 42721.1 不安全源自哪里 42821.2 不安全的块 42921.3 不安全的函数 43121.4 不安全的块还是不安全的函数 43321.5 未定义行为 43421.6 不安全的特型 43521.7 原始指针 43721.7.1 安全解引用原始指针 43921.7.2 示例:RefWithFlag 44021.7.3 可空指针 44221.7.4 类型大小与对齐 44221.7.5 指针算术 44321.7.6 移入和移出内存 44421.7.7 示例:GapBuffer 44721.7.8 不安全代码中的诧异安全性 45321.8 外来函数:在Rust中调用C和C++ 45321.8.1 查找共有数据表示 45421.8.2 声明外来函数和变量 45621.8.3 使用库函数 45821.8.4 libgit2的原始接口 46121.8.5 libgit2的安全接口 46621.9 小结 475作者介绍 476封面介绍 476
展开全部
图2
图3
配送说明
...
相似商品
为你推荐
开播时间:09月02日 10:30