-
内容大纲
本书可帮助读者学会在Unix、Linux shell、MacOS和Windows命令行上以轻松、循序渐进的方式使用Rust进行编程,引导读者全面了解Rust提供的功能。
本书从Rust的基础开始讲解,包括如何命名对象、控制执行流和处理基本类型。你将了解如何进行算术运算、分配内存、使用选代器以及处理输入/输出。掌握了这些核心技能后,你将很快就能用Rust处理错误并使用Rust的面向对象特性构建强大的Rust应用程序。
本书对初学者非常友好,只需了解基本的编程知识——最好是有C或C++的基础知识,就可以完成本书的学习。而且,要充分理解本书,只需知道什么是整数和浮点数,以及能够区分标识符和字符串就可以了。 -
作者介绍
卡洛·米拉内西(Carlo Milanesi),Rust专家和专业软件开发人员。他是Rust开发社区的贡献者,也曾使用PHP、JavaScript、Java、Ionic和Vaadin框架基于Linux进行Web应用程序开发。他还涉猎了其他技术,包括GUI设计、2D和3D渲染、测试自动化、数据库访问等。他毕业于米兰大学,曾在金融和计算机辅助制造行业工作。 -
目录
前言
作者简介
审校者简介
第1章 终端打印
1.1 如何开始
1.2 Hello,world!
1.3 打印字面量字符串的组合
1.4 打印多行文本
1.5 打印整数
1.6 命令行脚本
1.7 注释
第2章 算术运算
2.1 整数加法
2.2 整数之间的其他运算
2.3 浮点运算
2.4 语句序列
2.5 分断字面量字符串
第3章 命名对象
3.1 将名称与值相关联
3.2 可变变量
3.3 未变化的可变变量
3.4 未初始化的变量
3.5 前导下划线
3.6 布尔值
3.7 布尔表达式
3.8 赋值中的类型一致性
3.9 类型和可变性的改变
3.10 赋值算术运算符
3.11 使用标准库的函数
第4章 控制执行流
4.1 条件语句(if)
4.2 条件表达式
4.3 条件循环(while)
4.4 无限循环(loop)
4.5 计数循环(for)
4.6 变量作用域
第5章 使用数据序列
5.1 数组
5.1.1 可变数组
5.1.2 指定大小的数组
5.1.3 多维数组
5.2 向量
5.3 空数组和空向量
5.4 调试打印
5.5 复制数组和向量
第6章 使用基本类型
6.1 非十进制数字基数
6.2 数字字面量中的下划线
6.3 指数表示法
6.4 各种有符号整数
6.5 无符号整数类型
6.6 目标相关的整数类型
6.7 类型推断
6.8 浮点数值类型
6.9 显式转换
6.10 数字字面量的类型后缀
6.11 所有数值类型
6.12 布尔值和字符
6.13 空元组
6.14 数组和向量类型
6.15 常数
6.16 发现表达式的类型
第7章 枚举情况
7.1 枚举
7.2 match构造
7.3 关系运算符和枚举
7.4 处理所有情况
7.4.1 对数字使用match
7.4.2 数据枚举
7.4.3 “match”表达式
7.4.4 在match结构中使用守卫
第8章 使用异构数据结构
8.1 元组
8.2 结构
8.3 元组结构
8.4 词法约定
第9章 定义函数
9.1 定义和调用函数
9.1.1 使用后定义的函数
9.1.2 函数屏蔽其他函数
9.1.3 将参数传递给函数
9.1.4 按值传递参数
9.2 从函数返回值
9.2.1 提前退出
9.2.2 返回多个值
9.3 如何更改属于调用者的变量
9.4 通过引用传递参数
9.4.1 使用引用
9.4.2 引用的可变性
第10章 定义泛型函数和结构
10.1 对泛型函数的需求
10.2 定义和使用泛型函数
10.3 推断参数类型
10.4 定义和使用泛型结构
10.4.1 泛型机制
10.4.2 泛型数组和向量
10.4.3 泛型枚举
10.5 错误处理
10.6 枚举标准实用程序函数
第11章 分配内存
11.1 各种分配
11.1.1 线性寻址
11.1.2 静态分配
11.1.3 栈分配
11.1.4 堆分配
11.2 与C和C++的相似性
11.3 装箱与拆箱
11.4 寄存器分配
第12章 数据实现
12.1 探索对象的大小
12.1.1 use指令
12.1.2 基本类型的大小
12.2 基本类型的表示
12.3 字节在内存中的位置
12.4 复合数据类型的大小
12.5 向量分配
第13章 定义闭包
13.1 对“一次性”函数的需求
13.2 捕获环境
13.3 闭包
13.4 其他例子
第14章 使用可变字符串
14.1 静态字符串
14.2 动态字符串
14.3 字符串的实现
14.4 创建字符串
14.5 连接字符串
第15章 范围和切片
15.1 范围
15.2 将序列传递给函数
15.3 切片
15.4 切片操作
15.5 超出范围的切片
15.6 可变切片
15.7 开放式范围和切片操作
第16章 使用迭代器
16.1 字符串字符
16.2 扫描字符串
16.3 在for循环中使用迭代器
16.3.1 不可变的迭代
16.3.2 可变的迭代
16.4 迭代器适配器:filter
16.4.1 map迭代器适配器
16.4.2 enumerate迭代器适配器
16.5 迭代器消费者:any
16.5.1 all迭代器消费者
16.5.2 count迭代器消费者
16.5.3 sum迭代器消费者
16.5.4 min和max迭代器消费者
16.5.5 collect消费者
16.6 迭代器链
16.7 迭代器是“惰性的”
第17章 输入/输出和错误处理方式
17.1 命令行参数
17.2 进程返回码
17.3 环境变量
17.4 从控制台读取
17.5 正确的运行时错误处理
17.6 写入控制台
17.7 将值转换为字符串
17.8 文件输入/输出
17.9 处理文本文件
第18章 使用trait
18.1 对trait的需求
18.2 trait的补救
18.3 没有trait界限的泛型函数
18.4 trait作用域
18.5 多函数trait
18.6 方法
18.7 “self”和“Self”关键字
18.8 标准trait
18.8.1 “Iterator” trait
18.8.2 “type”关键字
18.8.3 泛型trait
18.8.4 使用关联类型简化泛型trait使用
18.8.5 “Iterator”标准trait声明
18.9 使用泛型迭代器
第19章 面向对象程序设计
19.1 固有实现
19.2 Rust面向对象的特殊性
19.3 可变方法
19.4 构造函数
19.5 组合而不是继承
19.6 组合的内存使用情况
19.6.1 静态分发
19.6.2 动态分发
19.6.3 trait引用的实现
19.6.4 静态分发与动态分发
第20章 标准库集合
20.1 集合
20.2 测量执行时间
20.3 执行任意插入和移除
20.4 队列
20.5 链表
20.6 二叉堆
20.7 有序集和无序集
20.8 有序字典和无序字典
20.9 C++和Rust中的集合
第21章 丢弃、移动和复制
21.1 确定性析构
21.2 所有权
21.3 析构函数
21.4 赋值语义
21.4.1 复制与移动性能对比
21.4.2 移动和销毁对象
21.4.3 对复制语义的需要
21.4.4 克隆对象
21.4.5 使类型可克隆或可复制
第22章 借用和生命周期
22.1 所有权和借用
22.2 对象生命周期
22.3 关于借用的错误
22.3.1 如何防止“丢弃后使用”错误
22.3.2 如何防止“别名更改后使用”错误
22.4 多重借用的可能情况
22.5 使用块来限制借用作用域
22.6 返回引用对生命周期说明符的需求
22.6.1 生命周期说明符的用法和意义
22.6.2 检查生命周期说明符的有效性
22.6.3 使用调用函数的生命周期说明符
第23章 关于生命周期的更多信息
23.1 生命周期省略
23.2 面向对象编程的生命周期省略
23.3 结构对生命周期说明符的需要
23.4 可能的结构生命周期说明符
23.5 生命周期说明符的其他用途
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-
孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-
时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-
本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...