本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正
内容简介
内容简介这是一部注重编码能力训练的实战性著作,既能帮助读者扎实掌握Rust的主要语法知识并具备实战能力,又能指导读者快速从初学者晋级为高手。全书秉持学以致用的原则:一方面,没有事无巨细地罗列Rust的每一个语法知识点,但是常用知识点和重要知识点悉数囊括;一方面,将各种常见数据结构和算法与Rust编程实战相结合,同时精选39道LeetCode高频算法面试题,帮助读者快速语法知识固化为实战能力。全书一共15章,分为3个部分:*1部分(*1~11章) Rust编程*备语法非常有针对性地讲解了Rust的常用语法,由浅入深,循序渐进,能帮助读者快速掌握Rust的*备语法知识并具备基本的编程能力*二部分(*12~13章) Rust编码能力训练将数组、栈、队列、哈希表、链表、树等实用的数据结构和递归、分治、回溯、二分查找、深度优先搜索、广度优先搜索、排序、动态规划等常用算法与Rust编程实战结合,并精选39道LeetCode高频算法面试真题,帮助读者将语法知识转化为编程实战能力。第三部分(*14~15章) Rust综合进阶实战以排序算法为主题,围绕功能拓展和性能拓展两条主线,结合工程管理、泛型、trait系统、高阶函数、闭包、迭代器、单元测试、多线程并发和异步并发等重要的语法知识点进行综合实战训练,进一步在实战中提升编程水平。
目录
前言语言基础篇*1章 初识Rust21.1 Rust语言简介21.2 搭建编程环境31.3 Hello Rust41.4 Hello Cargo51.5 本章小结7*2章 变量与数据类型82.1 变量和可变性82.1.1 变量声明82.1.2 变量的可变性92.1.3 变量遮蔽92.1.4 常量102.2 基本数据类型112.2.1 整数类型112.2.2 浮点数类型122.2.3 布尔类型122.2.4 字符类型122.2.5 范围类型122.3 复合数据类型132.3.1 元组类型132.3.2 数组类型142.3.3 结构体类型152.3.4 枚举类型172.4 容器类型182.4.1 Vec182.4.2 VecDeque212.4.3 HashMap252.5 字符串282.5.1 字符串的创建292.5.2 字符串的修改292.5.3 字符串的访问322.6 字面量和运算符342.6.1 字面量342.6.2 运算符342.7 本章小结35第3章 流程控制373.1 条件判断373.1.1 if条件判断373.1.2 if-else条件判断383.1.3 if-else if-else条件判断383.2 循环393.2.1 loop循环393.2.2 while循环403.2.3 for循环403.2.4 continue和break语句413.3 match模式匹配413.4 if let和while let模式匹配423.5 本章小结43第4章 函数、闭包与迭代器444.1 函数444.1.1 定义函数444.1.2 方法和函数464.1.3 高阶函数474.2 闭包504.2.1 基本语法504.2.2 类型推断504.2.3 捕获环境变量514.3 迭代器514.3.1 Iterator trait524.3.2 消费器524.3.3 迭代器适配器544.4 本章小结56第5章 类型系统575.1 泛型575.1.1 泛型与容器575.1.2 泛型与结构体585.1.3 泛型与枚举605.1.4 泛型与函数615.1.5 泛型与方法615.2 trait系统625.2.1 trait定义与实现625.2.2 trait作为参数635.2.3 返回实现trait的类型665.2.4 标准库常用trait665.3 类型转换715.3.1 原生类型间的转换715.3.2 数字与String类型间的转换725.3.3 &str与String类型间的转换735.4 本章小结73第6章 所有权系统746.1 通用概念746.1.1 栈内存与堆内存746.1.2 值语义与引用语义756.1.3 复制语义与移动语义756.2 所有权机制766.2.1 变量绑定766.2.2 所有权转移776.2.3 浅复制与深复制816.3 引用和借用836.3.1 引用与可变引用836.3.2 借用规则876.3.3 借用示例1:切片886.3.4 借用示例2:迭代器906.4 生命周期926.4.1 生命周期语法926.4.2 悬垂引用946.4.3 生命周期与函数966.4.4 生命周期与结构体986.4.5 生命周期省略规则1006.5 本章小结100第7章 智能指针1027.1 独占所有权的Box1027.1.1 Box在堆上存储数据1027.1.2 Deref解引用1037.1.3 Drop清理资源1047.2 共享所有权的Rc1057.3 应对内部可变性的RefCell1067.4 本章小结108第8章 并发编程1098.1 多线程并发1098.1.1 线程管理1108.1.2 线程池1148.2 异步并发1158.2.1 async/.await语法1158.2.2 async-std库1178.3 本章小结119第9章 错误处理1209.1 Result1209.1.1 高效处理Result1219.1.2 处理不同类型的错误1229.1.3 传播错误1239.2 Panic1259.2.1 追踪Panic1259.2.2 捕获Panic1269.3 本章小结127*10章 模块化编程12810.1 crate管理12810.1.1 使用Cargo创建crate12910.1.2 使用第三方crate12910.2 module系统13010.2.1 定义模块13010.2.2 创建多文件模块13110.2.3 多文件模块的层级关系13210.2.4 模块的可见性13310.2.5 使用use导入模块13510.2.6 模块的路径13610.2.7 使用pub use重导出13610.2.8 加载外部crate13710.3 本章小结138*11章 单元测试13911.1 单元测试框架13911.2 编写测试14011.2.1 使用assert!14011.2.2 使用assert_eq!和assert_ne!14111.2.3 自定义失败信息14211.3 运行测试14311.3.1 运行部分测试14411.3.2 忽略某些测试14511.4 本章小结146编程能力训练篇*12章 数据结构实战14812.1 数组14812.1.1 移动零14912.1.2 加一15612.1.3 删除排序数组中的重复项15812.2 栈与队列15912.2.1 *小栈16012.2.2 有效的括号16312.2.3 滑动窗口*大值16512.3 哈希表16812.3.1 两数之和17012.3.2 有效的字母异位词17212.3.3 字母异位词分组17412.4 链表17912.4.1 反转链表18212.4.2 链表的中间节点18312.4.3 合并两个有序链表18512.4.4 删除链表的倒数第n个节点18712.5 树19112.5.1 二叉树的前序遍历19512.5.2 二叉树的中序遍历19912.5.3 二叉树的后序遍历20212.5.4 二叉树的层次遍历20612.5.5 二叉搜索树中的插入操作20812.6 本章小结211*13章 算法实战21313.1 递归、分治与回溯21313.1.1 pow(x, n)21613.1.2 爬楼梯21813.1.3 括号生成22013.1.4 子集22213.1.5 组合22413.1.6 N皇后22713.2 二分查找23013.2.1 搜索旋转排序数组23113.2.2 寻找旋转排序数组中的*小值23213.2.3 有效的完全平方数23513.3 深度与广度优先搜索23613.3.1 二叉树的*大深度23913.3.2 二叉树的*小深度24213.3.3 二叉搜索树中的搜索24413.4 排序算法24613.4.1 数组中的第k个*大元素25713.4.2 合并区间25913.4.3 翻转对26113.5 动态规划26413.5.1 爬楼梯26513.5.2 *小路径和26713.5.3 三角形*小路径和26913.5.4 零钱兑换27013.5.5 *长上升子序列27313.5.6 编辑距离27413.6 本章小结277综合实战篇*14章 泛型与高阶函数实战28014.1 工程管理28014.2 泛型编程28114.2.1 插入排序算法28214.2.2 加载算法库28414.2.3 结构体实例排序28514.3 高阶函数编程28714.3.1 排序算法库28714.3.2 生成随机数据29114.3.3 排序算法API库29214.4 本章小结295*15章 并发编程实战29615.1 多线程并发29615.2 异步并发29815.2.1 排序算法库的异步实现29815.2.2 排序算法API库的异步实现30215.2.3 创建可执行程序30315.3 本章小结305