内容简介 · · · · · · 本书详细描述了Rust语言的基本语法,穿插讲解一部分高级使用技巧,并以更容易理解的方式解释其背后的设计思想。全书总共分五个部分。 第一部分介绍Rust基本语法,因为对任何程序设计语言来说,语法都是基础,学习这部分是理解其他部分的前提。 第二部分介绍属于Rust独一无二的内存管理方式。它设计了一组全新的机制,既保证了安全性,又保持了强大的内存布局控制力,而且没有额外性能损失。这部分是本书的重点和核心所在,也是Rust语言的思想内核精髓之处。 第三部分介绍Rust的抽象表达能力。它支持多种编程范式,以及较为强大的抽象表达能力。 第
深入浅出Rust
✍ Scribed by 范长春
- Year
- 2018
- Tongue
- Chinese
- Leaves
- 405
- Edition
- 1
- Category
- Library
No coin nor oath required. For personal study only.
✦ Table of Contents
封面
书名
版权
前言
目录
第一部分 基础知识
第1章 与君初相见
1.1 版本和发布策略
1.2 安装开发环境
1.3 HelloWorld
1.4 Prelude
1.5 Format格式详细说明
第2章 变量和类型
2.1 变量声明
2.1.1 变量遮蔽
2.1.2 类型推导
2.1.3 类型别名
2.1.4 静态变量
2.1.5 常量
2.2 基本数据类型
2.2.1 bool
2.2.2 char
2.2.3 整数类型
2.2.4 整数溢出
2.2.5 浮点类型
2.2.6 指针类型
2.2.7 类型转换
2.3 复合数据类型
2.3.1 tuple
2.3.2 struct
2.3.3 tuple struct
2.3.4 enum
2.3.5 类型递归定义
第3章 语句和表达式
3.1 语句
3.2 表达式
3.2.1 运算表达式
3.2.2 赋值表达式
3.2.3 语句块表达式
3.3 if-else
3.3.1 loop
3.3.2 while
3.3.3 for循环
第4章 函数
4.1 简介
4.2 发散函数
4.3 main函数
4.4 const fn
4.5 函数递归调用
第5章 trait
5.1 成员方法
5.2 静态方法
5.3 扩展方法
5.4 完整函数调用语法
5.5 trait约束和继承
5.6 Derive
5.7 trait别名
5.8 标准库中常见的trait简介
5.8.1 Display和Debug
5.8.2 PartialOrd/Ord/PartialEq/Eq
5.8.3 Sized
5.8.4 Default
5.9 总结
第6章 数组和字符串
6.1 数组
6.1.1 内置方法
6.1.2 多维数组
6.1.3 数组切片
6.1.4 DST和胖指针
6.1.5 Range
6.1.6 边界检查
6.2 字符串
6.2.1 &str
6.2.2 String
第7章 模式解构
7.1 简介
7.2 match
7.2.1 exhaustive
7.2.2 下划线
7.2.3 match也是表达式
7.2.4 Guards
7.2.5 变量绑定
7.2.6 ref和mut
7.3 if-1et和while-1et
7.4 函数和闭包参数做模式解构
7.5 总结
第8章 深入类型系统
8.1 代数类型系统
8.2 Never Type
8.3 再谈Option类型
第9章 宏
9.1 简介macro
9.1.1 实现编译阶段检查
9.1.2 实现编译期计算
9.1.3 实现自动代码生成
9.1.4 实现语法扩展
9.2 示范型宏
9.3 宏1.1
第二部分 内存安全
第10章 内存管理基础
10.1 堆和栈
10.2 段错误
10.3 内存安全
第11章 所有权和移动语义
11.1 什么是所有权
11.2 移动语义
11.3 复制语义
11.4 Box类型
11.5 Clone VS.Copy
11.5.1 Copy的含义
11.5.2 Copy的实现条件
11.5.3 Clone的含义
11.5.4 自动derive
11.5.5 总结
11.6 析构函数
11.6.1 资源管理
11.6.2 主动析构
11.6.3 DropVS.Copy
11.6.4 析构标记
第12章 借用和生命周期
12.1 生命周期
12.2 借用
12.3 借用规则
12.4 生命周期标记
12.4.1 函数的生命周期标记
12.4.2 类型的生命周期标记
12.5 省略生命周期标记
第13章 借用检查
13.1 编译错误示例
13.2 内存不安全示例:修改枚举
13.3 内存不安全示例:迭代器失效
13.4 内存不安全示例:悬空指针
13.5 小结
第14章 NLL(Non-Lexical-Lifetime)
14.1 NLL希望解决的问题
14.2 NLL的原理
14.3 小结
第15章 内部可变性
15.1 Cell
15.2 RefCell
15.3 UnsafeCell
第16章 解引用
16.1 自定义解引用
16.2 自动解引用
16.3 自动解引用的用处
16.4 有时候需要手动处理
16.5 智能指针
16.5.1 引用计数
16.5.2 Cow
16.6 小结
第17章 泄漏
17.1 内存泄漏
17.2 内存泄漏属于内存安全
17.3 析构函数泄漏
第18章 Panic
18.1 什么是panic
18.2 Panic实现机制
18.3 Panic Safety
18.4 小结
第19章 Unsafe
19.1 unsafe关键字
19.2 裸指针
19.3 内置函数
19.3.1 transmute
19.3.2 内存读写
19.3.3 综合示例
19.4 分割借用
19.5 协变
19.5.1 什么是协变
19.5.2 PhantomData
19.6 未定义行为
19.7 小结
第20章 Vec源码分析
20.1 内存申请
20.2 内存扩容
20.3 内存释放
20.3.1 Vec的析构函数
20.3.2 DropCheck
20.4 不安全的边界
20.5 自定义解引用
20.6 迭代器
20.7 panic safety
第三部分 高级抽象
第21章 泛型
21.1 数据结构中的泛型
21.2 函数中的泛型
21.3 impl块中的泛型
21.4 泛型参数约束
21.5 关联类型
21.6 何时使用关联类型
21.7 泛型特化
21.7.1 特化的意义
21.7.2 default上下文关键字
21.7.3 交叉impl
第22章 闭包
22.1 变量捕获
22.2 move关键字
22.3 Fn/FnMut/FnOnce
22.4 闭包与泛型
22.5 闭包与生命周期
第23章 动态分派和静态分派
23.1 trait object
23.2 object safe
23.3 impltrait
第24章 容器与迭代器
24.1 容器
24.1.1 Vec
24.1.2 VecDeque
24.1.3 HashMap
24.1.4 BTreeMap
24.2 迭代器
24.2.1 实现迭代器
24.2.2 迭代器的组合
24.2.3 for循环
第25章 生成器
25.1 简介
25.2 对比迭代器
25.3 对比立即求值
25.4 生成器的原理
25.4.1 生成器原理简介
25.4.2 自引用类型
25.5 协程简介
第26章 标准库简介
26.1 类型转换
26.1.1 AsRef/AsMut
26.1.2 Borrow/BorrowMut
26.1.3 From/Into
26.1.4 ToOwned
26.1.5 ToString/FromStr
26.2 运算符重载
26.3 I/O
26.3.1 平台相关字符串
26.3.2 文件和路径
26.3.3 标准输入输出
26.3.4 进程启动参数
26.4 Any
第四部分 线程安全
第27章 线程安全
27.1 什么是线程
27.2 启动线程
27.3 免数据竞争
27.4 Send&Sync
第28章 详解Send和Sync
28.1 什么是Send
28.2 什么是Sync
28.3 自动推理
28.4 小结
第29章 状态共享
29.1 Arc
29.2 Mutex
29.3 RwLock
29.4 Atomic
29.5 死锁
29.6 Barrier
29.7 Condvar
29.8 全局变量
29.9 线程局部存储
29.10 总结
第30章 管道
30.1 异步管道
30.2 同步管道
第31章 第三方并行开发库
31.1 threadpool
31.2 scoped-threadpool
31.3 parking_lot
31.4 crossbeam
31.5 rayon
第五部分 实用设施
第32章 项目和模块
32.1 cargo
32.2 项目依赖
32.2.1 配置
32.2.2 workspace
32.2.3 build.rs
32.3 模块管理
32.3.1 文件组织
32.3.2 可见性
32.3.3 use关键字
第33章 错误处理
33.1 基本错误处理
33.2 组合错误类型
33.3 问号运算符
33.4 main函数中使用问号运算符
33.5 新的Failure库
第34章 FFI
34.1 什么是FFI
34.2 从C调用Rust库
34.3 从Rust调用C库
34.4 更复杂的数据类型
第35章 文档和测试
35.1 文档
35.2 测试
附录 词汇表
📜 SIMILAR VOLUMES
内容简介 · · · · · · 本书详细描述了Rust语言的基本语法,穿插讲解一部分高级使用技巧,并以更容易理解的方式解释其背后的设计思想。全书总共分五个部分。 第一部分介绍Rust基本语法,因为对任何程序设计语言来说,语法都是基础,学习这部分是理解其他部分的前提。 第二部分介绍属于Rust独一无二的内存管理方式。它设计了一组全新的机制,既保证了安全性,又保持了强大的内存布局控制力,而且没有额外性能损失。这部分是本书的重点和核心所在,也是Rust语言的思想内核精髓之处。 第三部分介绍Rust的抽象表达能力。它支持多种编程范式,以及较为强大的抽象表达能力。 第
<p>你将从《深入浅出JavaScript(中文版)》学到什么?这么说你准备从写html和css的静态网页跃进到编写动态网络应用程序脚本了?这里就是起点。《深入浅出java script》带你游历令人兴奋的交互式网页创建过程。为了启发你的思考,《深入浅出JavaScript(中文版)》覆盖了所有的java script基本知识,从基本网络编程技巧,如变量、函数和循环语句,到高级一些的专题,如表单验证、dom操作、客户端对象、脚本程序调试——甚至是aiax!赶快做好准备……快速响应的网站离你只有几页纸那么远。</p> <p>为何《深入浅出JavaScript(中文版)》看上去如此不同?</p>
《深入浅出Networking》内容简介:厌倦了让人昏昏欲睡的网络术语?想学网络管理却苦于无法入门?试试《深入浅出Networking》吧。这是本渐进式的学习指南,书中以趣味案例为背景讲解网络知识,规划了从初学者到专家的学习课程,目标是让读者知其然,更知其所以然。想寻找网络电缆的断路点?布线时遇到障碍?该用交换机还是路由器,用DHCP还是NAT,用端口映射还是静态IP地址?如何排查网络故障?《深入浅出Networking》会告诉你答案。